2012-02-29 23 views
0

管理者ユーザーのために、検証があっても自動的に失敗する更新フォームが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| %> 

すべてが正しく読み込まれますが、保存しようとすると、検証は無視され、リダイレクトされます。成功メッセージを含む索引ページですが、データは保存されません。私は名前空間と何か関係がないと感じていますが、何が問題なのか完全にはわかりません。ベースモデルディレクトリでモデルを探すことができますか?

答えて

1

あなたはパラメータを検査しましたか? params[:admin]にはフォームの値が含まれていないと思います。

+0

これは間違いなく、空白です。私は、検証が実行されていないので、名前空間の問題だと思います。 – VirtuosiMedia

+0

検証は '@ admin.update_attributes(nil)'について不平を言っていません。 – iltempo

+0

Admin :: Adminモデルがparamsでどのように使われているかを調べてみてください。テストしなかったが、 'params ['admin :: admin']のようなものを想像することができた。 – iltempo

0

したがって、VirtuosiMediaと私はそれを踏み出し、RoRはAdmin :: namespaceを表す "admin_"を追加するので、params [:admin_admin]を探す必要がありました。

関連する問題