这有助于在单个“项目”展示页面上显示 Accessing an attribute of a linked model in Rails
但是我在为'所有项目表'
做同样的事情时遇到了麻烦...
<% @items.each do |item| %>
...
<td><%= item.room.name %></td>
...
显然,一个房间有很多物品。
只有这样才有效:
<td><%= item.room_id %></td>
我似乎无法在那里使用它,给出:
undefined method `name' for nil:NilClass
答案 0 :(得分:3)
查看Rails的Delegate模块:
class Item < ActiveRecord::Base
# ...
delegate :name, :to => :room, :allow_nil => true, :prefix => :room
end
这会将实例方法room_name
添加到Item
,这会更优雅地失败(如果没有空间则返回nil
,而不是NilClass
错误)。