rails неопределенный метод `each’ для #<Field

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть форма, которая позволяет пользователю зарегистрироваться для участия в турнире. В процессе создания регистрационной формы я использую динамические вложенные поля с пока field_type basic . Когда я загружаю новую форму участников, я пытаюсь загрузить все поля из таблицы полей с помощью field_type из basic . Он найдет их, и если я просто попробую <%= @basic.name %> из новой формы он даст имя последнего поля в базе данных с этим field_type , но если я попытаюсь:

 <% @basic.each do |b| %>
  <%= b.name %>
<% end 
 

Я получаю сообщение об ошибке неопределенный метод `each’ для #<Field.

Вот новое действие от participants_controller:

 def new
    @participant = @event.participants.new
    @user = User.find(current_user.id)
    @children = @user.children
    @basic = Field.find_by(event_id: @event.id, field_type: 'basic')
  end
 

Поля принадлежат событиям, но должен ли я подключать их к участникам, чтобы это работало?

Спасибо

Ответ №1:

find_by возвращает только одну запись (или nil , если критерии не совпадают), используемую where для возврата коллекции.

 @basic = Field.where(event_id: @event.id, field_type: 'basic')
 

Однако, предполагая, что у вас есть ассоциация has_many :fields , определенная в Event , вы также можете использовать:

 @basic = @event.fields.where(field_type: 'basic')
 

И если у вас есть scope :basic, -> { where(field_type: 'basic') } определенный, Field вы можете еще больше упростить:

 @basic = @event.fields.basic