0

製品コントローラーにパラメーターを渡そうとしていますが、エラーが発生しています。

次のコードがある場合:

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
4

0 に答える 0