2017-10-13 45 views
-2

我想呈现传递给搜索搜索的搜索参数的字符串。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 params[:q][:title_cont].present? == true %>

<% 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 %> 
固定它