我有一个项目类和类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是如何嵌套的。

希望这有助于。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top