2014-06-29 34 views
0

剛剛安裝了elasticsearch gem並進行了配置。使用elasticsearch關聯數據庫

我得到了正確的模型的搜索工作。然而在視圖上我還包括來自被稱爲公司相關的數據庫模型的數據,這讓我這個錯誤:

undefined method `company' for #<Elasticsearch::Model::Response::Result:0x000001032d67d0> 

如果我嘗試刪除相關的觀點,即有關數據庫的一切,搜索完美的作品。所以這只是解決這個問題。

我對application.rb中模式是這樣的:

require 'elasticsearch/model' 
class Application < ActiveRecord::Base 
    belongs_to :company 
    has_many :answers 
include Elasticsearch::Model 
include Elasticsearch::Model::Callbacks 
.... 

我的課,我顯示出來(searches_controller.rb

def index 
    @application = Application.search(params[:query]) 
end 

,最後的index.html。 erb文件:

<%= form_tag search_startup_path, method: :get do %> 
<p> 
    <%= text_field_tag :query, params[:query] %> 
    <%= submit_tag "Search", name: nil %> 
</p> 
<% end %> 

<hr> 
<% @application.each do |f| %> 

<h2><%= f.company.name %> is looking for a <%= f.work_type %></h2> 
    <%= image_tag f.company.avatar(:medium), alt:"#{f.company.name.pluralize} logo", height:"100", width:"100" %> 
    <p><%= link_to "Visit #{f.company.name.pluralize} website", f.company.website, rel: "nofollow" %></p> 
    <p>Company located in: <%= f.company.city %>, <%= f.company.country %></p> 
    <p>Required to be on location: <%= f.location %> </p> 

<% end %> 

因此,在沒有elasticsearch的情況下查看關聯的公司數據庫可以正常工作。所以這裏沒有錯誤,我只是不確定如何啓用elasticsearch來查看屁股。模型

回答

1

新的彈性搜索庫只返回來自elasticsearch的數據並將其封裝到Hashie::Mash寶石中。所以你只和Elasticsearch::Model::Response::Result一起工作。如果你想與你的ActiveRecord指數行動工作已經看起來像這樣:

def index 
    @application = Application.search(params[:query]).records 
end 

records方法返回的ActiveRecord模型集合,你可以找到在github上的詳細信息讀取我https://github.com/elasticsearch/elasticsearch-rails/tree/master/elasticsearch-model#search-results-as-database-records