在我的控制器中,我有以下
def index
if !params[:place_id].nil? || !params[:place_id].empty?
@restaurant = GoogleSearchedLocation.registered(params[:place_id])
else
redirect_to customers_url
end
end
在我的模型中,我定义了以下范围
scope :registered , -> (place_id) { where(:place_id => place_id) }
预期输出如下,即以数组
的形式< GoogleSearchedLocation id:1,place_id:“ChIJSeoh6hkEGTkRsd0e1crAbHU”,名称:“Dunkin'Donuts”,评分:4.3, 经度:零,纬度:零,范围:“GOOGLE”,created_at: “2015-10-15 10:59:23”,updated_at:“2015-10-15 10:59:23”>
我试图将它转换为我的控制器功能中的对象,如下所示
@restaurant1= @restaurant[0].each_slice().map{|a| GoogleSearchedLocation.new(a)}
但是它正在抛出错误
未定义的方法`each_slice'for < GoogleSearchedLocation:0x00000005345cb0>
当我们都知道each_slice()函数时,任何人都可以解释错误的原因。并且建议将这种数组转换为对象的合理方法
答案 0 :(得分:2)
你可以简单地使用GoogleSearchedLocation.registered(params[:place_id]).first
来获取第一个找到的记录。
另请注意,对于此类简单查询,有find_by_something
之类的ActiveRecord帮助程序。看看这个:
@restaurant = GoogleSearchedLocation.find_by_place_id(params[:place_id])
<强> P.S。强>
您可以在条件中使用params[:place_id].blank?
:
nil.blank?
# => true
''.blank?
# => true
'12'.blank?
# => false