嵌套模型形式和update_attributes方法
-
27-09-2019 - |
题
我有一个项目类和类TeamMember之间的一对多的关系嵌套模型的形式,并且在所述控制器等的更新功能:
@project = Project.find(params[:id])
@project.update_attributes(params[:project])
现在,我想设置的形式为一些团队成员的储蓄发生前无法设置某些字段。我不能使用的update_attributes充当是这样做的。
什么是做到这一点的最好方法是什么?
谢谢, 尼古拉斯。
解决方案
我将调查accepts_nested_attributes_for
功能。你可能会碰到这样的:
class Project < ActiveRecord::Base
has_one :team
accepts_nested_attributes_for :team
# also this will be useful
validates_associated :team
end
在您的形式,你会想用fields_for
方法巢您的属性。这看起来可能是这样的:
<% form_for(@project) do |p| %>
<%= p.error_messages %>
<!-- Project name -->
<%= p.text_field :name %>
<% f.fields_for(@project.team) do |t| %>
<!-- Team Name -->
<%= t.text_field :name %>
<% end %>
<%= f.submit 'Create Project' %>
<% end %>
当您提交表单,您将能够调用@project.update_attributes(params[:project])
,它会工作。您也可以raise params.inspect
看到PARAMS是如何嵌套的。
希望这有助于。
不隶属于 StackOverflow