2017-10-12 44 views
0

我已经引用这2个stackoverflow的帖子,但我似乎无法得到q[categories_name_cont]填充“CategoryName”在我的网址:/articles/browse?utf8=✓&q[categories_name_cont]=&commit=CategoryName我点击名为“CategoryName”例如。ROR + Ransack:按钮或link_to筛选

1)Rails filter with button or link_to using Ransack 2)How to construct a clickable link with a scope using Ransack and Rails

browse.html.erb

<% @categories.each do |category| %> 
    <%= search_form_for @q, url: browse_articles_path, method: :get do |f| %> 
     <%= f.hidden_field :categories_name_cont %> 
     <%= f.submit category.name, :class => 'btn btn-primary', :onclick => "document.getElementById('q_categories_name_cont').value = '#{category.name}'" %> 
    <% end %> 
    <% end %> 

articles_controller.rb

def browse 
    @q = Article.ransack(params[:q]) 
    @articles = @q.result.includes(:categories, :users) 
    @categories = Category.with_articles.order('name ASC').all 
    end 

UPDATE:

1)硬编码的document.getElementById( 'q_categories_name_cont')。值= “类别名称” 并没有导致这个网址要么.. /articles/browse?utf8=✓&q[categories_name_cont]=CategoryName后,我点击名为按钮 “类别名称”

2)我结束起来使用下面的方法来传递参数给的网址:

<% @categories.each do |category| %> 
    <a class="btn btn-large btn-primary" href="/articles/browse?utf8=✓&q[categories_name_cont]=<%= category.name %>"> 
    </a> 
    <% end %> 

回答

0

您需要手动填写,在

<%= f.hidden_field :categories_name_cont, params[:q].try(:[], :categories_name_cont) %> 

它可以让曲。但烦恼。出于这个原因,我实际上已经编写了一个小的gem,以便与SimpleForm一起自动执行此操作。如果你想看看,那么你可以在这里找到:

https://github.com/kaspernj/simple_form_ransack

+0

谢谢,我已经试过你的宝石。嗯..所以我应该修改这个simple_search_for? <%= search_form_for @ransack,url:browse_articles_path,方法:: get do | f | %> <%= f.hidden_​​field:categories_name_cont%> <%= f.submit category.name,:类=> 'BTN BTN-初级' %> <% end %> – doyz

+0

我已复制并粘贴您的上面的代码,但是这似乎并没有工作,并给出了这个错误:“未定义的方法'合并'为零:NilClass” – doyz

+0

如果您按照自述文件说明操作,gem的说明应该非常直接。我没有足够的信息来通过错误消息知道错误。抱歉 – kaspernj