2011-08-09 14 views
0

例は、私がRail3ルートは、[編集問題]

match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction' 
resources :cellphones 

すべてOKとしての私のルートを構成していたしましたが、同様の構造を持っているので、私は携帯電話を編集することはできませんlocalhost/cellphones/edit/4

答えて

1

先に定義したルートが優先されるので、ルートを宣言した順番を逆にすると編集ルートに再びアクセスできるようになります。/cellphones/edit/:idのルートは/cellphones/:permalink/:chargerより制限が厳しいため、ルートの一部が「編集」され、パススルーされますそれが他のものならあなたの他のルートに。

resources :cellphonesによって作成されますが、両方が第二のセグメントとしてルートのワイルドカード部分を持っているので/cellphones/:permalink/:chargerから区別することが非常に困難である/cellphones/:id/editあるのでしかし、あなたが最も可能性が高い実際、/cellphones/edit/:idルートを持っていません。

最も簡単な方法は、/cellphones/:permalink/:chargerルートを変更して区別することです。 /cellphones/p/:permalink/:charger(パーマリンクには「p」)、resourcesで作成されたRESTfulルートと区別しやすいものを使用できます。

segment contraintsまたはadding more restful actionsなどの他の方法にもアプローチできます。

+0

おかげでエミリーを変更しなければならなかった、私はそれがあなたの問題を解決した場合は、この答えを受け入れることを確認してください@utiq私の問題 – utiq

+0

を解決しました。質問の左側にあるチェックボックスのアウトラインをクリックするだけです。 ;) – coreyward

+0

知りませんでした – utiq

0

私は解決策を見つけたが、ちょうど順序

resources :cellphones 
match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'