Rails Nested Forms Not Updating

浪尽此生 提交于 2019-12-24 08:17:16

问题


I'm having a problem getting update_attributes to update nested models in my form. I don't have any errors but the nested attributes aren't saving. Here's the relevant code:

Users model:

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

  accepts_nested_attributes_for :achievements 

Achievements model:

class Achievement < ActiveRecord::Base
  belongs_to :user 

Edit User form:

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

...

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

Edit method:

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  

Update method:

@user.update_attributes params[:user]

But when I check the @user.achievements array it's always empty even when I fill out the forms. Does anyone know what I'm doing wrong?


回答1:


You should change to accepts_nested_attributes_for :achievements_attributes. You can inspect the parameters for the form posts in your log file to see how rails named the form elements. Or inspect the HTML on your page.




回答2:


In the user model:

attr_accessible :achievements_attributes

Seems to work :)



来源:https://stackoverflow.com/questions/6589355/rails-nested-forms-not-updating

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!