我有两张桌子
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 %>
请问我做得对吗?如果room_numbers没有计算,if语句是假的,但无论如何它们仍然打印出来!我被困了
答案 0 :(得分:2)
BookRoom.where(:room_number => @room.room_number)
这将从特定BookRoom
(Room
)获取 room_number 的所有@room
。
顺便说一句,我猜你的关联是不正确的。 has_many
和BookRoom
之间必须存在Room
关系。
您遇到的问题是,在@customer
变量中,您分配了所有BookRooms
。然后根据此变量创建一个循环。所有BookRoom
都在显示。
此外,在您的book_rooms
架构中,没有first_name
。
修改强>
BUG:在if条件下,您使用=
运算符代替==
<% @customer = BookRoom.all %>
<% @customer.each do |c| %>
<% if c.room_number == @room.room_number %>
<%= c.first_name %>
<% end %>
<% end %>