将pg_search params打印到Rails 5模板页面

时间:2018-03-05 17:07:42

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

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

如果我的搜索网址看起来像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>

1 个答案:

答案 0 :(得分:1)

您需要修改您的网址,例如添加[]的数组字符串如果保留它,那么它只有[],那么它只需要limestone之类的最后一个值,   在修改URL之后,它将看起来像http://http://127.0.0.1:3000/products?utf8=%E2%9C%93&query[]=modern&query[]=stone&query[]=limestone

然后如果你写的话

<%= params[:query] %>

它会返回

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

现在你可以运行像

这样的循环
<ul>
    <% params[:query].each do |query_params|  %>
        <li><%= query_params %></li>
    <% end  %>
</ul>

然后输出

  • modern
  • 石头
  • 石灰石