16

我正在制作自己的自定义视图,我需要使创建关联模型的过程对我的用户来说不那么痛苦。我想在线显示所有与模型相关的部分,并带有用于编辑它们的控件。对于基本字段,我自己很容易滚动,但我宁愿form_filtering_select为内联模型的关联使用部分,但我找不到任何文档来做到这一点。

4

2 回答 2

1

您可以使用嵌套表单

考虑一个 User 类,它从项目 reader 方法返回一个 Project 实例数组并响应 projects_attributes= writer 方法:

class User
  def projects
    [@project1, @project2]
  end

  def projects_attributes=(attributes)
    # Process the attributes hash
  end
end

请注意,fields_for 实际上需要 projects_attributes= writer 方法才能将 :projects 正确识别为集合,并在表单标记中设置正确的索引。

当 projects 已经是 User 的关联时,您可以使用 Accepts_nested_attributes_for 为您定义 writer 方法:

class User < ActiveRecord::Base
  has_many :projects
  accepts_nested_attributes_for :projects
end

此模型现在可以与嵌套的 fields_for 一起使用。对于集合中的每个实例,将重复给嵌套 fields_for 调用的块:

<%= nested_form_for @user do |user_form| %>
  ...
  <%= user_form.fields_for :projects do |project_fields| %>
    <% if project_fields.object.active? %>
      Name: <%= project_fields.text_field :name %>
    <% end %>
  <% end %>
  ...
<% end %>

详情请参考参考

于 2015-05-05T07:23:47.477 回答
0

那里有一个很酷的宝石,几乎可以满足您的需求。它被称为嵌套表单字段。它允许您在单个页面上编辑记录(连同它们的 has_many 关联)。很酷的一点是,它甚至使用 jQuery 来动态添加/删除表单字段,而无需重新加载页面。查看 gems文档以正确使用。希望有帮助!

于 2015-05-01T02:59:59.290 回答