【问题标题】:ROR + Ransack: Filter with button or link_toROR + Ransack:使用按钮或 link_to 过滤
【发布时间】:2018-03-24 01:50:15
【问题描述】:

我已经引用了这 2 个 stackoverflow 帖子,但我似乎无法在我的网址中使用“CategoryName”填充q[categories_name_cont]:例如,在我单击名为“CategoryName”的按钮后,/articles/browse?utf8=✓&q[categories_name_cont]=&commit=CategoryName

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

更新:

1) 硬编码 document.getElementById('q_categories_name_cont').value = "CategoryName" 也没有生成这个 url。 /articles/browse?utf8=✓&amp;q[categories_name_cont]=CategoryName 在我点击名为“CategoryName”的按钮后

2)我最终使用以下方法将参数传递给url:

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

【问题讨论】:

    标签: ruby-on-rails ruby search ruby-on-rails-5 ransack


    【解决方案1】:

    您需要手动填写。

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

    虽然它会变得很烦人。出于这个原因,我实际上已经编写了一个小 gem 来与 SimpleForm 一起自动执行此操作。如果你想看看,那么你可以在这里找到它:

    https://github.com/kaspernj/simple_form_ransack

    【讨论】:

    • 谢谢,我试过你的宝石。嗯..所以我应该像这样修改 simple_search_for 吗? 'btn btn-primary' %>
    • 我已经复制并粘贴了你上面的代码,但这似乎不起作用并给出了这个错误:“undefined method `merge' for nil:NilClass”
    • 如果您遵循 README 说明,gem 的说明应该非常简单。我没有足够的信息来仅通过错误消息知道出了什么问题。对不起
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多