这是我第一次来这里,第一次使用nested_form gem。一切似乎都没问题,但我的“父”模型的数据并没有保存。
这是我的代码
<%= nested_form_for @project do |f| %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<%= f.fields_for :tasks %>
<p><%= f.link_to_add "Add a task", :tasks %></p>
<%= f.submit %>
<% end %>
所以,当我“提交”时,只保存任务,但不保存项目名称。
对我有任何线索?我错过了什么吗?
答案 0 :(得分:1)
您需要添加属性。例如,名称为attr_accessible。
# app/models/project.rb
class Project < ActiveRecord::Base
has_many :tasks, :dependent => :destroy
accepts_nested_attributes_for :tasks, :allow_destroy => true
attr_accessible :name,:tasks_attributes ## <-- you need this line
end
答案 1 :(得分:0)
您的fields_for声明不太正确
<%= f.fields_for :tasks %>
应该是
<%= f.fields_for :tasks do |task_builder| %>
您也缺少该声明的结尾和渲染部分,该部分具有关联对象的嵌套字段。
所以你最终会得到像这样的东西
<%= f.fields_for :tasks do |task_builder| %>
<%= render 'task_fields', :f => task_builder %>
<% end %>
<p><%= f.link_to_add "Add a task", :tasks %></p>
这应该可以解决问题。您现在需要做的就是创建一个_task_field.html.erb partial并使用f.label,f.text_field等以常规方式将任务字段添加到它...
P.S。
您的代码可能无法运行。您可能会遇到错误,因此您的开场白可能会遗漏某些内容。