【发布时间】: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