按过滤器更改 URL
Change URL by filter
我正在使用 friendly_id 以便我可以创建这样的 URLs:
/search/france/weekly/toyota-95
我的路线:
scope to: 'search#show' do
get '/search/:car_country_id/:rental_type_id/:car_group_id', as: 'search_country'
end
在 search#show
视图中我有一个表单:
<%= form_tag search_country_path, :method => :get do %>
<%= select_tag(:car_country_id, options_from_collection_for_select(CarCountry.all, :slug, proc {|c| c.name }, {:selected => @country}), class: "Select-control u-sizeFull") %>
<%= submit_tag t('shared.search'), class: 'btn btn-primary' %>
<% end %>
并搜索控制器:
@country = CarCountry.friendly.find(params[:car_country_id])
好吧,我打算将 URL 更改为:
/search/italy/weekly/toyota-95
但问题是,当我从 select 标记的 select 国家时,Rails 参数总是发送 france 作为 car_country_id
并提交。
那我该怎么办?
目前,有两个 car_country_id
被发送到 Rails 服务器。您可以重命名其中之一:
<%= select_tag(:new_car_country_id, options_from_collection_for_select(CarCountry.all, :slug, proc {|c| c.name }, {:selected => @country}), class: "Select-control u-sizeFull") %>
在您的控制器中,您应该检查 new_car_country_id
是否存在。如果是,则重定向到相应的路径。
另一种方法是确保两个car_country_id
相同。一旦 select_tag
更新为 JavaScript.
,您应该更改表单的提交路径
我正在使用 friendly_id 以便我可以创建这样的 URLs:
/search/france/weekly/toyota-95
我的路线:
scope to: 'search#show' do
get '/search/:car_country_id/:rental_type_id/:car_group_id', as: 'search_country'
end
在 search#show
视图中我有一个表单:
<%= form_tag search_country_path, :method => :get do %>
<%= select_tag(:car_country_id, options_from_collection_for_select(CarCountry.all, :slug, proc {|c| c.name }, {:selected => @country}), class: "Select-control u-sizeFull") %>
<%= submit_tag t('shared.search'), class: 'btn btn-primary' %>
<% end %>
并搜索控制器:
@country = CarCountry.friendly.find(params[:car_country_id])
好吧,我打算将 URL 更改为:
/search/italy/weekly/toyota-95
但问题是,当我从 select 标记的 select 国家时,Rails 参数总是发送 france 作为 car_country_id
并提交。
那我该怎么办?
目前,有两个 car_country_id
被发送到 Rails 服务器。您可以重命名其中之一:
<%= select_tag(:new_car_country_id, options_from_collection_for_select(CarCountry.all, :slug, proc {|c| c.name }, {:selected => @country}), class: "Select-control u-sizeFull") %>
在您的控制器中,您应该检查 new_car_country_id
是否存在。如果是,则重定向到相应的路径。
另一种方法是确保两个car_country_id
相同。一旦 select_tag
更新为 JavaScript.