0

次の問題があり、なぜ機能しないのか理解できません。

私はルートを持っています:

get "/:id" => 'landings#show_direct',  as: :direct_landing,  id: /ticket-from-[a-zA-Z0-9_]+/
get "/:id" => 'landings#show_reverse', as: :reverse_landing, id: /ticket-to-[a-zA-Z0-9_]+/

そして、それは正常に動作します

localhost:3000/ticket-form-moscow
localhost:3000/ticket-to-moscow

レーキルート | grep 着陸

direct_landing  GET /:id(.:format) landings#show_direct {:id=>/ticket-from-[a-zA-Z0-9_]+/}
reverse_landing GET /:id(.:format) landings#show_reverse {:id=>/ticket-to-[a-zA-Z0-9_]+/}

しかし、リンクを作成しようとすると

= link_to @landing.title_to, reverse_landing_url('ticket-to-moscow')

エラーメッセージがあります

No route matches {:action=>"show_reverse", :controller=>"landings", :id=>"ticket-to-moscow", :format=>nil} missing required keys: [:id]

私が間違っていることはありますか?

4

2 に答える 2

2

私はおそらく別の戦略を試すでしょう。

get 'tickets/to/:id' => 'landings#show_direct', as: 'tickets_to'
get 'tickets/from/:id' => 'landings#show_reverse', as: 'tickets_from'

それで:

link_to "Tickets to Moscow!", tickets_to_url('Moscow')
link_to "Tickets from Moscow!", tickets_from_url('Moscow')
于 2013-06-09T17:30:23.773 に答える
0

全てに感謝!

それは私の間違いでした

使用する必要があります

get "/:id", to: 'landings#show_direct',  as: :direct_landing,  id: /ticket-from-[a-zA-Z0-9_]+/

代わりは

get "/:id" => 'landings#show_direct',  as: :direct_landing,  id: /ticket-from-[a-zA-Z0-9_]+/

次のヘルパーが正常に動作するようになりました

direct_landing_url(:id => 'ticket-to-moscow')
于 2013-08-07T05:42:07.047 に答える