2017-10-13 21 views
-2

ransack検索に渡された検索パラメータの文字列をレンダリングしようとしています。ROR + Ransack:選択された検索パラメータのレンダリング

しかし、特定の属性が検索に含まれているかどうかを検出する方法は考えられません。以下のコードは機能しますが、パラメータが空の場合はボタンを非表示にしません。

記事/ browse.html.erb

<% if params[:q].present? == true %> 
    <button type="button" class="btn btn-outline-primary btn-lg"><%= params[:q][:title_cont] %></button> 
    <button type="button" class="btn btn-outline-primary btn-lg"><%= params[:q][:categories_name_cont] %></button> 
    <button type="button" class="btn btn-outline-primary btn-lg"><%= params[:q][:user_name_cont] %></button> 
    <% end %> 

私は条件の下に使用してみましたが、それはこのエラーを与える:undefined method [] for nil:NilClass

<% if params[:q][:title_cont].present? == true %> 

記事コントローラ

def browse 
    @q = Article.ransack(params[:q]) 
    @articles = @q.result.includes(:categories, :users) 
    end 

答えて

1

私は<% if @q.title_cont.present? == true %>

browse.html.erb

<% if @q.title_cont.present? == true %> 
     <button type="button" class="btn btn-outline-primary btn-lg"><%= params[:q][:title_cont] %></button> 
    <% end %> 
    <% if @q.categories_name_cont.present? == true %> 
     <button type="button" class="btn btn-outline-primary btn-lg"><%= params[:q][:categories_name_cont] %></button> 
    <% end %> 
    <% if @q.user_name_cont.present? == true %> 
     <button type="button" class="btn btn-outline-primary btn-lg"><%= params[:q][:user_name_cont] %></button> 
    <% end %> 
<% if params[:q][:title_cont].present? == true %>

を変更することにより、それを修正

関連する問題