製品コントローラーにパラメーターを渡そうとしていますが、エラーが発生しています。
次のコードがある場合:
def index
@products = Product.paginate(:page => params[:page], :per_page => 10)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @products }
end
すべて正常に動作します。しかし、次のように変更すると:
def index
@products = Product.where('model LIKE ?', '%deluxe%').paginate(:page => params[:page], :per_page => 10) if params[:selected_term] != nil
respond_to do |format|
format.html # index.html.erb
format.json { render json: @products }
end
end
エラー メッセージが表示されます。
The @products variable appears to be empty. Did you forget to pass the collection object for will_paginate?
私のviews/application.html.erbには、次のものがあります。
<% filters = ProductsFilter.all %>
<li><%= link_to "Products", "/product" %></li>
<% if controller_name == 'products' %>
<div class="btn-group">
<button class="btn">Viewpoint</button>
<button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<% filters.each do |filter| %>
<li><%= link_to filter.term, tweet_path(:selected_term => filter.term) %></li>
<% end %>
<% end %>
解決:
これで問題は解決しました(おそらく最もエレガントな解決策ではありません):
def index
@products = Product.paginate(:page => params[:page], :per_page => 10)
if (params[:selected_term]) != nil
selected_term = params[:selected_term]
@products = Product.where('Product_text LIKE ?', "%#{selected_term}%").paginate(:page => params[:page], :per_page => 10)
end