【问题标题】:Filtering using collection_select params使用 collection_select 参数过滤
【发布时间】:2013-03-29 14:38:36
【问题描述】:

我有一个简单的表单,它允许用户根据location_id 过滤搜索结果,该表单在collection_select 表单的字段中给出。如果选择了特定位置,我想呈现缩小的结果,如果用户选择默认的“请选择”字段,我想呈现所有结果。

此代码适用于单独的位置,但如果用户选择“请选择”字段则不起作用。 params[:location_id].blank? 在控制器中不起作用。

查看

<%= form_tag @city %>
  <%= collection_select 'location_id', nil, @city.locations, :id, :address, prompt: true %>
  <%= submit_tag "sort", :name => nil, class: "btn btn-success travel-button", id: "hotels-radius-search-button" %>
<% end %>

控制器

if params[:location_id].blank?
  ...render all results...
else
  ..render specific results...
end

更新

服务器的响应

选择默认“请选择”选项时的参数 -- 无效

Parameters: {"utf8"=>"✓", "search_radius"=>"6", "location_id"=>[""], "_"=>"1365350127863", "id"=>"75"}

用户在菜单中选择任何选项时的参数 -- 成功

Parameters: {"utf8"=>"✓", "search_radius"=>"6", "location_id"=>["811"], "_"=>"1365350127865", "id"=>"75"}

Parameters: {"utf8"=>"✓", "search_radius"=>"6", "location_id"=>["808"], "_"=>"1365350127865", "id"=>"75"}

【问题讨论】:

  • 你的服务器说什么?你能发布它收到的参数吗?
  • 你好托马斯!感谢您的回复,我已将参数包含在问题中
  • 问题是,您以某种方式将location_id 作为数组发布。因此params[:location_id].blank? 总是false
  • 考虑使用select_tag
  • 谢谢!此代码有效

标签: ruby-on-rails ruby-on-rails-3 search filter params


【解决方案1】:

发布我的答案,因为无法接受 cmets :-)

collection_select 已被使用并正在发送Array

因此建议使用select_tag

【讨论】:

    猜你喜欢
    • 2019-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多