-->

Rails的洗劫 - 如何搜索多个值(Rails Ransack - How to search m

2019-10-18 22:21发布

使用洗劫的宝石,我能够实现使用复选框一定值的搜索。 然而,这并没有超过一个复选框工作。 我在想什么?

视图:

<%= search_form_for @search do |f| %>
  Part Time:<%= check_box_tag "q[job_type_cont]", value = "Part time" %></br>
  Full Time:<%= check_box_tag "q[job_type_cont]", value = "Full time" %></br>
  <%= f.submit "Search" %>
<% end %>

索引操作:

def index
  @search = Job.search(params[:q])
  @jobs = @search.result
 end

Answer 1:

[:Q]你的观点总是在PARAMS只发送一个值:job_type_cont]它会随着要么兼职全职的时间接收多个值的字符串,则需要将其更改为一个数组(您需要更改复选框名属性)如下

Part Time: <%= check_box_tag "q[job_type_cont][]", "Part time" %></br>
Full Time: <%= check_box_tag "q[job_type_cont][]", "Full time" %>

与上述实施方式中,在控制器PARAMS [:Q] [:job_type_cont]将与从视图中选定值的数组



Answer 2:

Kalpesh建议

Part Time: <%= check_box_tag "q[job_type_cont][]", "Part time" %></br>
Full Time: <%= check_box_tag "q[job_type_cont][]", "Full time" %>

@search = Job.search(job_type_in: params[:q][:job_type_cont])
@jobs = @ search.result

这是真正的意思的一种迂回的方式:

Part Time: <%= check_box_tag "q[job_type_in][]", "Part time" %></br>
Full Time: <%= check_box_tag "q[job_type_in][]", "Full time" %>

这样就没有必要在你的控制器搞笑的业务:

@search = Job.search(params[:q])


文章来源: Rails Ransack - How to search multiple values