2

我有一个简单的表单,它允许用户根据表单字段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"}

ETC

4

1 回答 1

2

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

collection_select被使用并且正在发送一个Array.

因此建议使用 of select_tag

于 2013-04-07T17:19:48.940 回答