例は、私がRail3ルートは、[編集問題]
match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'
resources :cellphones
すべてOKとしての私のルートを構成していたしましたが、同様の構造を持っているので、私は携帯電話を編集することはできませんlocalhost/cellphones/edit/4
例は、私がRail3ルートは、[編集問題]
match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'
resources :cellphones
すべてOKとしての私のルートを構成していたしましたが、同様の構造を持っているので、私は携帯電話を編集することはできませんlocalhost/cellphones/edit/4
先に定義したルートが優先されるので、ルートを宣言した順番を逆にすると編集ルートに再びアクセスできるようになります。/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などの他の方法にもアプローチできます。
私は解決策を見つけたが、ちょうど順序
resources :cellphones
match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'
おかげでエミリーを変更しなければならなかった、私はそれがあなたの問題を解決した場合は、この答えを受け入れることを確認してください@utiq私の問題 – utiq
を解決しました。質問の左側にあるチェックボックスのアウトラインをクリックするだけです。 ;) – coreyward
知りませんでした – utiq