我有一个简单的表单,允许用户根据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"}
等
答案 0 :(得分:2)
发表我的回答,因为不能接受评论: - )
collection_select
已被使用并正在发送Array
。
因此建议使用select_tag
。