2016-07-24 111 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

相關問題