2016-05-19 2 views
0

В моем приложении rails у меня есть две модели под названием «пользователь» и «магазин». An user belongs_to store и A store has_many users. У пользователя есть много атрибутов, таких как имя, адрес электронной почты и роль и т. Д.,. В одной из форм для хранилища я хочу использовать вложенные формы для создания пользователей, роль которых packer. Проблема в том, что я использую вложенные формы, также перечислены другие пользователи, чья роль не является «упаковщиком». Я специально хочу использовать вложенные формы только для пользователей, роль которых - «упаковщик». Есть ли способ, чтобы фильтровать пользователей с ролью «упаковщик» в вложенными формахФильтр для вложенных форм - Ruby on Rails

ответ

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 не является строго необходимым - вы можете использовать любую переменную, но это делает его легче построить многоразовые партиалы.

Смежные вопросы