我有一个rails 4应用程序,我试图使用elasticsearch。在我添加Elasticsearch之前,我的代码工作正常,但现在我收到了这个错误:
undefined method `map' for nil:NilClass
我的索引视图(我使用haml):
= form_tag products_path, :method => :get do
= text_field_tag :query, params[:query]
= submit_tag "Search", :name => nil
= render "table"
这是我的_table partial:
- headers = @products.map(&:data).flat_map(&:keys).uniq
%table
%tr
- headers.each do |key|
%th= key
- @products.each do |product|
%tr
- headers.each do |key|
%td= product.data[key]
我的产品控制器#index
def index
if params[:query].present?
Product.search(params[:query])
else
@products = Product.all.where(:product_type_id => @product.id)
end
end
我的模特:
class Product < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
belongs_to :product_type
end
谢谢!
答案 0 :(得分:1)
如果存在查询,则@products
似乎为零。我认为你打算做这样的事情:
if params[:query].present?
@products = Product.search(params[:query])
else
@products = Product.all.where(:product_type_id => @product.id)
end