我很生气,我问这个,因为它应该是显而易见的。但我有些不对劲。我正在尝试在索引中显示引用模型的属性。
Rails 4.0.0
ruby 2.0.0p247
应用程序/模型/ unit.rb
class Unit < ActiveRecord::Base
belongs_to :building
end
应用程序/模型/ building.rb
class Building < ActiveRecord::Base
has_many :units
end
在控制台中:
Loading development environment (Rails 4.0.0)
2.0.0-p247 :001 > unit = Unit.find(3)
Unit Load (4.1ms) SELECT "units".* FROM "units" WHERE "units"."id" = ? LIMIT 1 [["id", 3]]
=> #<Unit id: 3, number: "APT 10", bed: "2", bath: "2", sqft: "300", amenities: "Stuff", building_id: 3, created_at: "2013-10-15 04:17:45", updated_at: "2013-10-15 04:37:10">
2.0.0-p247 :002 > unit.building.street_address
Building Load (0.5ms) SELECT "buildings".* FROM "buildings" WHERE "buildings"."id" = ? ORDER BY "buildings"."id" ASC LIMIT 1 [["id", 3]]
=> "4564 Jones Ave"
2.0.0-p247 :003 >
在默认的index.html.erb中,只有一处更改:
<% @units.each do |unit| %>
<tr>
<td><%= unit.number %></td>
<td><%= unit.bed %></td>
<td><%= unit.bath %></td>
<td><%= unit.sqft %></td>
<td><%= unit.amenities %></td>
<td><%= unit.building.street_address %></td>
<td><%= link_to 'Show', unit %></td>
<td><%= link_to 'Edit', edit_unit_path(unit) %></td>
<td><%= link_to 'Destroy', unit, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
我做的唯一改变是添加“.street_address”。如果我添加它我得到一个错误,street_address不是一个定义的方法。如果我将其移除,导轨将清楚地显示该装置已连接到建筑物。我该怎么办?
答案 0 :(得分:1)
请注意,如果您的数据库中有孤立的unit
条记录(即没有相应的building
条记录),则可能会出现此类错误。
答案 1 :(得分:0)
如果没有看到错误,也许try会有效吗?像这样使用它:
<td><%= unit.building.try(:street_address) %></td>