视图中模型的未定义方法

时间:2015-02-03 02:20:37

标签: ruby-on-rails ruby

在视图中,我有以下代码:

<%= Photo.where(user_token: @token) %>

返回:

#<Photo::ActiveRecord_Relation:0x007fee45353ac8>

如果我添加.inspect

#<ActiveRecord::Relation [#<Photo id: 420, photo_url: "Screen_Shot_2015-01-03_at_1.11.25_AM.png", created_at: "2015-02-03 02:06:28", updated_at: "2015-02-03 02:06:28", user_token: "gila-2">]>

但如果我这样做:

<%= Photo.where(user_token: @token).photo_url %>

我得到undefined method photo_url for <Photo::ActiveRecord_Relation

2 个答案:

答案 0 :(得分:1)

如果您只想加载与查询匹配的第一条记录,请使用find_by方法:

Photo.find_by(user_token: @token)

该方法只返回一条记录(如果未找到,则返回nil)。而where返回的关系(简化!)就像数组一样。

答案 1 :(得分:0)

如果多个记录符合ActiveRecord::Relation条件,则where可以表示许多记录。尝试类似:

<%= Photo.where(user_token: @token).first.photo_url %>