0

У меня есть две таблицыесли заявление для модели на другой странице шоу

create_table "book_rooms", force: :cascade do |t| 
    t.integer "room" 
    t.string "room_number" 
end 

и

create_table "rooms", force: :cascade do |t| 
    t.string "room_number" 
end 

в номерах показать страницу я хочу, чтобы отобразить «book_rooms.room_number» с тем же значением с 'rooms.room_number', но я продолжаю получать все объекты книжного помещения, напечатанные в виде массива в каждой комнате. Страница

номера показать страницу

<% @customer = BookRoom.all %> 
<% if @customer[0].room_number = @room.room_number %> 
    <% @customer.each do |c| %> 
    <%= c.first_name %> 
    <% end %> 
<% end %> 

pls есть что-то, что я не делаю правильно? утверждение if должно быть ложным, если номер_нумера не совпадает, но они все равно распечатываются независимо! я застрял

ответ

2
BookRoom.where(:room_number => @room.room_number) 

Это будет получать все BookRoom с room_number от конкретного Room (который @room). Кстати, я думаю, что ваша ассоциация неверна. Должно быть отношение has_many между BookRoom и Room.

Проблема, с которой вы столкнулись, в переменной @customer вы назначаете все BookRooms. Затем, основываясь на этой переменной, вы создали цикл. Все это отображает все BookRoom.

Кроме того, в вашей схеме book_rooms нет first_name.

EDIT

BUG: В вашем состоянии, если вы использовали оператор = вместо ==

<% @customer = BookRoom.all %> 
<% @customer.each do |c| %> 
    <% if c.room_number == @room.room_number %> 
    <%= c.first_name %> 
    <% end %> 
<% end %> 
+0

Кроме того, вы должны быть определения отношения ActiveRecord по идентификатору. Не знаете, почему room_number является строкой, но если вы определили свой объект как типичную миграцию рельсов, он должен был сгенерировать столбец идентификатора по умолчанию. –

+0

голый со мной .. theres фактически столбец first_name просто не включил его. erm book_room уже принадлежит_от родителя, поэтому я не связывал обе модели .. так что я не могу реализовать свою логику, если бы они не были связаны друг с другом? потому что я уже пробовал «.where», и он делает то же самое ... и поэтому оператор if не останавливает цикл? –

+0

@ChineduLloydAbalogu, Отредактированный ответ. – Emu

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