2016-07-24 79 views
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 %> 

请问我有没有做对吗?如果room_numbers不符合,if语句就是假的,但他们仍然可以打印出来!我坚持

回答

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

这将获取所有BookRoomroom_number从特定Room(这是@room)。顺便说一句,我猜你的关联是不正确的。 BookRoomRoom之间必须有has_many关系。

您面临的问题是,在您的@customer变量中,您指定了全部BookRooms。然后根据这个变量创建一个循环。所有BookRoom正在显示。

此外,在您的book_rooms架构中没有first_name

编辑

BUG:在你的,如果你的条件使用=操盘==

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

此外,你应该定义由ID ActiveRecord的关系。不知道为什么room_number是一个字符串,但如果您已经将对象定义为典型的rails迁移,则默认情况下应该生成一个id列。 –

+0

bare with me .. theres其实first_name列只是没有包括它。 erm book_room已经属于父母,所以我没有关联这两个模型..所以我不能实现我的逻辑没有他们彼此相关联?因为我已经尝试过'.where'并且它做了同样的事情...所以if语句不会停止循环? –

+0

@ChineduLloydAbalogu,编辑答案。 – Emu

相关问题