在我的rails应用程序中,我有两个名为'user'和'store'的模型。 An user belongs_to store
和A store has_many users
。用户拥有许多属性,如姓名,电子邮件和角色等。在其中一种商店表单中,我想使用嵌套表单来创建角色为打包器的用户。问题是,当我使用嵌套表单时,还会列出其角色不是“打包器”的其他用户。我特别希望仅为角色为“packer”的用户使用嵌套表单。有没有办法过滤用嵌套形式的“打包者”角色的用户
答案 0 :(得分:0)
首先,您可能需要设置“捷径”关系:
class Store < ActiveRecord::Base
has_many :users
has_many :packers, -> { where(role: 'packer') }, class_name: 'User'
end
class User < ActiveRecord::Base
belongs_to :store
end
fields_for(record_name, record_object = nil, options = {}, &block)
采用可选的record_object
参数,允许您设置使用的记录:
<%= form_for @store do |f| %>
...
<%= f.fields_for :users, f.object.packers do |user| %>
<%= user.hidden_field :role %>
<%= user.text_field :name %>
<% end %>
...
<% end %>
使用f.object
并非绝对必要 - 您可以使用任何变量,但它确实可以更容易地构建可重用的部分。