2012-01-05 16 views
0

ミスマッチの原因となる複雑なルートと一致する必要があります。これは私のルートファイルエントリです。複雑なルーティングの問題Rails 3

match 'households/:id/edit'=>'households#edit', :via=>:get, :as=>:edit_household, :id=>/\d{1,5}/ 
    match 'households/:id' => 'households#update', :via => :put 
    match 'households/:id' => 'households#destroy', :via=>:delete 
    match 'households/:city_code-:region_code'=>'households#index', :via=>:get, :as=>:households, :city_code=>/[A-Z]{3,5}/, :region_code=>/[A-Z]{0,3}\d{0,5}/ 
    match 'households/:city_code-:region_code-:h_uid'=>'households#show', :via=>:get, :as=>:household, :city_code=>/[A-Z]{3,5}/, :region_code=>/[A-Z]{0,3}\d{0,5}/ 

さて問題は、要求

http://0.0.0.0:3000/households/9/edit 

はショーコントローラにルーティングされ、いずれかが私を助けることができるエラーが

ルーティングエラー

No route matches {:controller=>"households", :action=>"show", :format=>nil, :city_code=>#<Household id: 9, uid: "0004", house_no: "House No 12", street: "Street 512", address: "Lorem ipsum dolor sit amet, consectetur adipisicing...", region_id: 3, created_at: "2012-01-05 11:06:32", updated_at: "2012-01-05 11:06:32">} 

を生成していることですその中に?

+0

編集ページの何かが表示ページへのリンクを生成しようとしましたが、失敗しているのではなく、URLが表示コントローラにルーティングされていますか? –

+0

はい、私は確信しています。ブラウザに直接編集URLを入力すると、 'No route match error'に来ました。エラーでは' show'アクションが記述されているのを見ることができます。 –

+0

development.logにバックトレースがありますか? –

答えて

1

私はに私のルートを変更:

resources :households, :only=>[:index, :edit, :update, :destroy] do 
    collection do 
     match ':city_code-:region_code-:h_uid'=>'households#show', :via=>:get, :as=>:show, :city_code=>/[A-Z]{3,5}/, :region_code=>/[A-Z]{0,3}\d{0,5}/ 
    end 
    end 

とすべてのものが正常に動作しています。

0

あなたがいないcity_codeルートヘルパーに渡しているように思えるが、オブジェクト:

:city_code => #<Household id: 9, uid: "0004", house_no: "House No 12", ... > 

それは制約があるとして、ルータによって拒否され、当然のことながら、次のとおりです。:city_code=>/[A-Z]{3,5}/を。

+0

私はビューに何も渡しません。私はブラウザにURLを入力してテストしています。あなたがルートで見ることができるように、編集ルートはショーの上にあり、URLは編集ルートの制約を満たしていますが、まだそれはショーに向いています。 –