首页 > 解决方案 > 在 Rails 中循环遍历 form.select(使用 Elastic Search/Searchkick aggs)

问题描述

我完全被困在 Rails 中的 form.select 循环中(使用 Elastic Search/Searchkick aggs)。

当我不预先挂起 form.select 助手时,我可以访问“bucket”数组(因此也可以访问“key”和“doc_count”),但是当它存在时它不会循环。不知道我将如何动态获得选项!

有谁知道可能出了什么问题(忽略 link_to 的东西,一旦我能得到实际的“密钥”,我就会改变它)?也许我错误地使用了 form.select 助手?谢谢!

<% form.select @jobs.aggs["location"]["buckets"].each do |bucket| %>
     <% if params[:location] == bucket["key"].to_s %>
        <strong><%= link_to bucket["key"], request.params.except(:location)%></strong>
      <% else %>
         <%= link_to bucket["key"], request.params.merge(location: bucket["key"])%>
      <% end %>
<% end %>

标签: ruby-on-railsrubyelasticsearchsearchkick

解决方案


我想到了!这是我的语法错误,因为我忘记在 form.select 的第一部分使用 :location,并且在 [] 括号中也没有将块包裹起来(大概选项必须在数组中或使用此助手进行哈希处理)。

这是为我解决此问题的代码(简化):

<% form.select :location, [@jobs.aggs["location"]["buckets"].each do |bucket| %>
  <%= bucket["key"] %>
<% end ] %>

推荐阅读