【问题标题】:Print pg_search params to Rails 5 template page将 pg_search 参数打印到 Rails 5 模板页面
【发布时间】:2018-08-13 10:13:17
【问题描述】:

我有一个可使用pg_search gem 过滤的产品页面。我想做的是创建一个面包屑,在页面上列出搜索参数。

如果我的搜索 url 看起来像 http://127.0.0.1:3000/products?utf8=%E2%9C%93&query=modern&query=stone&query=limestone&commit=Search,我想将 modern stone limestone 打印到页面上。

products_controller.rb

def index
  @products = if params[:query]
               @albums = Album.where(name: params[:query])
               Product.search_for(params[:query])
              else
               @albums = Album.where(name: 'products')
                 Product.order(:name)
               end
end

index.html.erb 这是我尝试过的,但意识到它列出了所有标签,我只需要作为搜索参数一部分的标签

<ul class="product-index-breadcrumb">
  <% @products.each do |p| %>
    <% p.tags.each do |t| %>
      <li><%= t.name %></li>
    <% end %>
  <% end %>
</ul>

【问题讨论】:

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


    【解决方案1】:

    您需要修改您的 URL,例如添加 [] 的数组字符串,如果您保留它,那么它只需要没有 [],那么它只需要最后一个值,如 limestone, 修改 URL 后会变成这样http://http://127.0.0.1:3000/products?utf8=%E2%9C%93&amp;query[]=modern&amp;query[]=stone&amp;query[]=limestone

    如果你这样写

    <%= params[:query] %>
    

    它会返回

    ["modern", "stone", "limestone"]
    

    现在你可以像这样运行一个循环

    <ul>
        <% params[:query].each do |query_params|  %>
            <li><%= query_params %></li>
        <% end  %>
    </ul>
    

    那么输出就是

    • 现代
    • 石头
    • 石灰石

    【讨论】:

      猜你喜欢
      • 2021-05-23
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 2018-09-24
      • 2011-07-07
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多