刚安装了elasticsearch gem并进行了配置。
我在正确的模型上进行了搜索。但是在视图中我还包含来自相关数据库模型的数据,名为公司,它给了我这个错误:
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
....
我上课的地方( searching_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来查看屁股。模型
答案 0 :(得分:1)
新弹性搜索库仅返回elasticsearch中的数据并将其包装到Hashie::Mash
gem中。所以你只使用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