Ruby on Rails关系输出2个模型之间

时间:2013-05-13 18:20:38

标签: ruby-on-rails-3 relationship

我有两个型号。 第一个是活动,第二个是城市。在事件表中,我有一个名为city_id的列。 我想在每个活动展示视图中使用城市名称。

在事件控制器中:

@city = City.where(:id => @event.city_id)

在视图中:

<%= @city.name %>

一个城市有许多活动,一个活动属于一个城市。

我视图中的输出只是单词city。

嗯,哪里出错了?

1 个答案:

答案 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语句。