我有两个型号。 第一个是活动,第二个是城市。在事件表中,我有一个名为city_id的列。 我想在每个活动展示视图中使用城市名称。
在事件控制器中:
@city = City.where(:id => @event.city_id)
在视图中:
<%= @city.name %>
一个城市有许多活动,一个活动属于一个城市。
我视图中的输出只是单词city。
嗯,哪里出错了?答案 0 :(得分:1)
更改您的代码:
@city = City.where(:id => @event.city_id)
为:
@city = @event.city
除了超过必要的时间之外,原始代码实际上为一组城市返回一个ActiveRecord::Relation
对象 - 一个延迟加载的查询。调用@city.name
获取该关系的类名 - 即'City'。如果您添加.first
来触发查询并获取第一条记录,它将正常工作:
@city = City.where(:id => @event.city_id).first
但如上所述,这是一个比必要更多的代码;)。当然,这假设您在Event类中设置了belongs_to :city
语句。