非リソース ルートのヘルパー url およびパス ヘルパーに問題があります。
Item
他の属性の中で、sku
属性を持つモデルがあります
したがって、デフォルトのルーティングは
resources :items
デフォルトのインデックス ルートを作成します
item GET /items/:id(.:format) items#show
しかし、次のような URL に一致するようにそのルートをオーバーライドしたいと考えています。
/sku/:sku/id/:id
デフォルトの URL の代わりに:
/items/:id
したがって、次のルートを作成し、resources :items
最初に一致するように上に配置しました。
get "sku/:sku/id/:id" => "items#show", as: "item"
に行くと正しく動作しwww.example.com/sku/2342/id/8484
、正しいアイテムが表示されます。
ただし、私の問題は、オブジェクトを渡すitem_path
またはヘルパーを使用したい場合です。item_url
目的のパスを取得する代わりに/sku/2342/id/8484
、アイテムのIDが2回適用されたパスを取得しています/sku/8484/id/8484
Google とここで StackOverflow を数分間検索しましたが、答えが見つかりません。Rails ルーティングのドキュメントは既に読んでいますが、まだ成功していません。誰かが私を助けてくれることを願っています。