1

Rails 3 で、ルート :id が都市であり、:city_id/:id が場所であると想定する 2 つのカスタムマッチャーを使用して、いくつかの素敵でシンプルなルートを作成しようとしています...編集しようとする場合を除いて、正常に動作するようです.

すなわち。

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 で何か良いことがないか疑問に思っています。

ありがとう

4

1 に答える 1

1

このようにカスタムルートの名前を変更し、通常のルートに編集などを処理させたらどうですか.

get ':id' => 'cities#show', :as => :city_shortcut
get ':city_id/:id' => 'places#show', :as => :city_place_shortcut
于 2011-01-16T14:41:55.227 に答える