我正在创建自己的自定义视图,我需要让创建关联模型的过程对我的用户来说不那么痛苦。我希望在线显示所有相关联的模型,并使用控件进行编辑。这对于基本字段来说非常容易,但我宁愿使用form_filtering_select
部分来表示内联模型的关联,但我找不到任何文档来执行此操作。
答案 0 :(得分:1)
您可以使用Nested Form
考虑一个User类,它从projects 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方法才能正确识别:项目作为集合,以及要在表单标记中设置的正确索引。
当项目已经是User上的关联时,您可以使用accepts_nested_attributes_for为您定义编写器方法:
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 %>
以下是Reference的详细信息。
答案 1 :(得分:0)
那里有一个很酷的宝石可以满足您的需求。它被称为Nested Form Fields。它允许您在单个页面上编辑记录(及其has_many关联)。很酷的是,它甚至使用jQuery动态添加/删除表单字段而无需重新加载页面。检查宝石docs是否正确使用。希望有所帮助!