1

update_attributes でフォームのネストされたモデルを更新するのに問題があります。エラーはありませんが、ネストされた属性が保存されません。関連するコードは次のとおりです。

ユーザー モデル:

class User < ActiveRecord::Base 
  has_many :orders
  has_many :achievements    

  accepts_nested_attributes_for :achievements 

実績モデル:

class Achievement < ActiveRecord::Base
  belongs_to :user 

ユーザーフォームの編集:

<%= form_for @user, :html => { :multipart => true } do |f| %>   

...

<%= f.fields_for :achievements do | a | %>
    <%= a.label :title %>
    <%= a.text_field :title %><br>
<% end  %>  

編集方法:

def edit    
    @user = nil
    if params[:id] != nil
      @user = User.find(params[:id]) 
    elsif
      @user = current_user
    else
      redirect_to login_path
    end  
    5.times { @user.achievements.build }
  end  

更新方法:

@user.update_attributes params[:user]

しかし、@user.achievements 配列を確認すると、フォームに入力しても常に空です。私が間違っていることを誰かが知っていますか?

4

2 に答える 2

2

に変更する必要がありますaccepts_nested_attributes_for :achievements_attributes。ログ ファイル内のフォーム投稿のパラメーターを調べて、Rails がフォーム要素にどのように名前を付けたかを確認できます。または、ページの HTML を調べます。

于 2011-07-05T22:24:20.577 に答える
0

ユーザーモデルでは:

attr_accessible :achievements_attributes

うまくいくようです:)

于 2011-07-05T22:34:43.520 に答える