我试图找出如何从对象中获取属性/属性。
locations.rb模型将具有属性:city
@location = Location.where(:id => 1)
似乎要在我的控制器内找到但是如何从@location访问:city?
我尝试了所有组合并认为必须:
但相反,我正在
undefined method `city' for #<ActiveRecord::Relation:0x007ff2d1506330>
任何人都可以澄清为什么这不起作用,我在这里想念的是什么?香港专业教育学院搜索了如何做到这一点的例子,并尝试了所有组合无济于事:( THX
答案 0 :(得分:9)
Arel的where
查询返回一组模型,即使只有一个结果。
Location.where(:id => 1)
将有效地返回ActiveRecord::Relation
个Location
个对象的数组,即使该数组中只有一个来自此特定查询的结果。
要解决这个问题,要么
@location = Location.where(:id => 1).first
# or...
@location = Location.find(1) # Finds by ID
答案 1 :(得分:1)
要从ID中检索对象,请使用
@location = Location.find(1) # 1 is the id your looking for
阅读Active Record Query Interface上的指南,详细了解find
和where
。
答案 2 :(得分:1)
实际上,where
返回的数组不是实例,而是find
。由于city
是您的模型具有实例方法city
的属性,您无法将其用于数组。因此,请尝试@location = Location.find(1)
,然后@location.city