未定义的方法图

时间:2013-10-12 00:25:22

标签: ruby-on-rails ruby elasticsearch ruby-on-rails-4

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

谢谢!

1 个答案:

答案 0 :(得分:1)

如果存在查询,则@products似乎为零。我认为你打算做这样的事情:

  if params[:query].present?
     @products = Product.search(params[:query])
  else
     @products = Product.all.where(:product_type_id => @product.id)
  end