我有一个问题得到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。成就数组,它总是空的,即使我填写表格。有人知道我哪里做错了吗?
您应该更改为accepts_nested_attributes_for :achievements_attributes
。您可以检查日志文件中表单帖子的参数,以了解rails如何命名表单元素。或者检查页面上的HTML
用户模型:
attr_accessible :achievements_attributes
似乎工作:)