【问题标题】:pseudo-complex routes in rails 3rails 3中的伪复杂路线
【发布时间】:2011-01-16 14:19:58
【问题描述】:

我正在尝试使用 2 个自定义匹配器在 Rails 3 中创建一些不错的简单路线,这些匹配器假设根 :id 将是一个城市,而 :city_id/:id 将是一个地方......它似乎工作正常,除非当正在尝试编辑。

即。

root_url/countries/france
root_url/paris/some_place
root_url/paris

更准确地说,这是我的代码。

resources :countries do
  resources :cities
end

resources :cities do
  resources :places, :reviews
end

match ':id' => 'cities#show', :as => :city, :method => :get
match ':city_id/:id' => 'places#show', :as => :city_place, :method => :get

当我尝试编辑记录时,这似乎完全可以接受。 html如下:

<% form_for @city do |f| %>
<% end %>

生产:

<form accept-charset="UTF-8" action="/kiev" class="edit_city" id="edit_city_3581" method="post">

只有在以下情况下才会起作用:

<form accept-charset="UTF-8" action="/cities/kiev" class="edit_city" id="edit_city_3581" method="post">

我知道我可以简单地提供一个更高级的 form_for 路由来解决这个问题,但我想知道在我的 routes.rb 中是否有更好的事情可以让我的生活更轻松而不是打补丁?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 routes nested-routes custom-routes


    【解决方案1】:

    如果你像这样重命名你的自定义路由并让普通路由处理编辑等怎么样。

    get ':id' => 'cities#show', :as => :city_shortcut
    get ':city_id/:id' => 'places#show', :as => :city_place_shortcut
    

    【讨论】:

    • 我想过,这可能是要走的路。我只是想知道这种方式是否更好或重命名 form_for 路线。如果我使用 :city_shortcut 我将不得不更改所有 link_to 等与 form_for。我正在寻找优点/缺点。
    • 我会保留资源的默认行为,只修改此自定义增强所需的零碎部分。否则一切都会变得习惯和难以遵循。
    猜你喜欢
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2021-07-04
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多