管理者ユーザーのために、検証があっても自動的に失敗する更新フォームがRails 3にあります。それは以前の仕事ではでしたが、すべてを名前空間に移動しても保存されなくなりました。名前空間モデルで更新が失敗する
def update
@admin = Admin::Admin.find(params[:id])
respond_to do |format|
if @admin.update_attributes(params[:admin])
flash[:success] = "'#{@admin.name}' was successfully updated."
format.html { redirect_to admin_admins_path }
else
format.html { render action: "edit" }
end
end
end
とモデル(未完成が、以前に働い):ここで
は私のコントローラから該当するコードです
class Admin::Admin < ActiveRecord::Base
validates :name, :presence=>{:message=>"Name can't be blank"}
validates :email, :presence=>{:message=>"Email can't be blank"},
:length => {:minimum => 3, :maximum => 254, :message=>"Email must be between 3 and 254 characters"},
:uniqueness=>{:message=>"Email has already been registered"},
:format=>{:with=>/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :message=>"Email must be a valid email format"}
validates :password, :presence=>{:message=>"Password can't be blank"}
end
と部分フォームの最初の部分:
<%= form_for(@admin) do |f| %>
すべてが正しく読み込まれますが、保存しようとすると、検証は無視され、リダイレクトされます。成功メッセージを含む索引ページですが、データは保存されません。私は名前空間と何か関係がないと感じていますが、何が問題なのか完全にはわかりません。ベースモデルディレクトリでモデルを探すことができますか?
これは間違いなく、空白です。私は、検証が実行されていないので、名前空間の問題だと思います。 – VirtuosiMedia
検証は '@ admin.update_attributes(nil)'について不平を言っていません。 – iltempo
Admin :: Adminモデルがparamsでどのように使われているかを調べてみてください。テストしなかったが、 'params ['admin :: admin']のようなものを想像することができた。 – iltempo