0

私はelasticsearchで動作させようとしているRails 4アプリケーションを持っています。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]

私の製品Controller#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クエリが存在する場合は nil になるように見えます。私はあなたがこのようなことをするつもりだったと思います:

  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 に答える