【问题标题】:Change URL by filter通过过滤器更改 URL
【发布时间】:2017-12-12 04:55:18
【问题描述】:

我正在使用friendly_id,以便我可以创建这样的网址:

/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

但问题是,当我从选择标签中选择国家并提交时,Rails 参数总是将 france 发送为 car_country_id

那我该怎么办?

【问题讨论】:

    标签: ruby-on-rails url controller routes nested-routes


    【解决方案1】:

    目前,两个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 相同。使用 JavaScript 更新 select_tag 后,您应该更改表单的提交路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 2020-07-17
      • 1970-01-01
      相关资源
      最近更新 更多