if在不同展示页面

时间:2016-07-24 11:12:48

标签: ruby-on-rails activerecord rails-activerecord rails-api

我有两张桌子

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语句是假的,但无论如何它们仍然打印出来!我被困了

1 个答案:

答案 0 :(得分:2)

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

这将从特定BookRoomRoom)获取 room_number 的所有@room。 顺便说一句,我猜你的关联是不正确的。 has_manyBookRoom之间必须存在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 %>