0

我有两个模型。第一个是事件,第二个是城市。在事件表中,我有一个名为 city_id 的列。我想要每个事件显示视图上的城市名称。

在事件控制器中:

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

在视图中:

<%= @city.name %>

一个城市有很多事件,一个事件属于一个城市。

在我看来,输出只是城市这个词。

嗯,哪里错了?

4

1 回答 1

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

但如上所述,这比必要的代码多得多;)。当然,这是假设您belongs_to :city在 Event 类中设置了一个语句。

于 2013-05-13T18:22:45.153 回答