ルートの簡単な言語翻訳をしようとしていますが、なぜ私のアプローチが機能しないのか本当に理解できません。www.example.com/it/camere
電話rooms_path(locale: :it)
とwww.example.com/en/rooms
電話で取得したいのですがrooms_path(locale: :en)
。
たとえば、次のルートを見てください。
get ":locale/rooms" => "home#rooms", constraints: { locale: "en" }, as: "rooms"
get ":locale/camere" => "home#rooms", as: "rooms"
次の結果が得られます。
app.rooms_path # => error OK
app.rooms_path(locale: "it") # => 'it/camere' OK
app.rooms_path(locale: "en") # => 'en/camere' Why?!?
そして、次のルートを使用します(2番目の制約に注意してください)。
get ":locale/rooms" => "home#rooms", constraints: { locale: "en" }, as: "rooms"
get ":locale/camere" => "home#rooms", constraints: { locale: "it" }, as: "rooms"
次の結果が得られます。
app.rooms_path # => error OK
app.rooms_path(locale: "it") # => 'it/camere' OK
app.rooms_path(locale: "en") # => error Lol?!? This is weird!
なぜこれが起こっているのか誰かが私に説明できますか?
ルーティングに関するRailsの記事をすでに約3回読んだことがありますが、役に立ちませんでした。
PS私は学ぶためにプラグインを使用したくないです:)
編集:
これは、レーキルートを呼び出すことで得られるものです。
rooms GET /:locale/rooms(.:format) home#rooms {:locale=>"en"}
rooms GET /:locale/camere(.:format) home#rooms {:locale=>"it"}
root /(:locale)(.:format) home#index