【问题标题】:Filter for Nested forms - Ruby on Rails过滤嵌套表单 - Ruby on Rails
【发布时间】:2016-05-19 17:23:37
【问题描述】:

在我的 Rails 应用程序中,我有两个模型,分别称为“用户”和“商店”。 An user belongs_to storeA store has_many users。一个用户有许多属性,如姓名、电子邮件和角色等。在其中一种商店表单中,我想使用嵌套表单来创建角色为 packer 的用户。问题是当我使用嵌套表单时,还会列出其他角色不是“打包者”的用户。我特别想仅对角色为“打包者”的用户使用嵌套表单。有没有办法在嵌套表单中过滤角色为“打包者”的用户

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-4.2


    【解决方案1】:

    首先,您可能想建立一个“捷径”关系:

    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 = {}, &amp;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 不是绝对必要的 - 您可以使用任何变量,但它确实更容易构建可重用的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-11
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多