我有两个模型。第一个是事件,第二个是城市。在事件表中,我有一个名为 city_id 的列。我想要每个事件显示视图上的城市名称。
在事件控制器中:
@city = City.where(:id => @event.city_id)
在视图中:
<%= @city.name %>
一个城市有很多事件,一个事件属于一个城市。
在我看来,输出只是城市这个词。
嗯,哪里错了?
我有两个模型。第一个是事件,第二个是城市。在事件表中,我有一个名为 city_id 的列。我想要每个事件显示视图上的城市名称。
在事件控制器中:
@city = City.where(:id => @event.city_id)
在视图中:
<%= @city.name %>
一个城市有很多事件,一个事件属于一个城市。
在我看来,输出只是城市这个词。
嗯,哪里错了?
更改您的代码:
@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 类中设置了一个语句。