0

我有一个 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 部分:

- 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

谢谢!

4

1 回答 1

1

@products如果存在查询,看起来将为零。我认为你打算做这样的事情:

  if params[:query].present?
     @products = Product.search(params[:query])
  else
     @products = Product.all.where(:product_type_id => @product.id)
  end
于 2013-10-12T00:39:00.167 回答