如何从索引的ElasticSearch模型中获取image.url

时间:2013-04-07 20:47:45

标签: ruby-on-rails ruby paperclip elasticsearch

有谁知道如何从elasticsearcg(使用轮胎)索引的图像中获取image.url?

class Photo < ActiveRecord::Base
   include Tire::Model::Search
   include Tire::Model::Callbacks
   attr_accessible :caption, :user_id, :image, :venue_id
   attr_accessible :id, :image_file_name, :created_at, :updated_at, :city, :state, :country, :image_url
   has_attached_file :image, :styles => { :large => "9999x9999", :medium => "300x200>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
end

class SearchController < ApplicationController
   def index
   city_name = params[:city]
   @photos = Photo.search city_name
      respond_to do |format|
      format.html # index.html.erb
   end
end

在我的index.html.erb中:

<% @photos.each do |photo| %>
    <%= image_tag photo.image.url(:medium) %>

我收到一个未定义的方法`url'为nil:NilClass

有人能帮助我吗?

非常感谢y提前

2 个答案:

答案 0 :(得分:2)

添加到您的照片模型:

mapping do
  indexes :image
end

def image
  picture.url(:medium)
end

在你看来之后

<%= image_tag photo.image %>

答案 1 :(得分:0)

图像包含在存储模型的SQL数据库中,因此您需要使用搜索功能查询ElasticSearch,然后在该数据库中查找相应的条目。这是通过将load: true传递给Photo.search来实现的。

@photos = Photo.search city_name, load: true