URLの再配置された部分は、link_to in Railsから生じます
-
23-10-2019 - |
質問
これが私が今やっている方法です:
link_to "Profile", :controller => "profiles", :action => "asked", :id => @profile
# => <a href="/profiles/asked/1">Profile</a>
URLがより理にかなっていますか <a href="/profiles/1/asked">Profile</a>
? Profile 1
いくつか尋ねました question
S、だからURLが次のように見える方が私にとってより理にかなっています /:controller/:id/:action
.
同意した場合、どうすればこれを達成できますか?
同意しない場合は、その理由を教えてください。 (私はRuby on Railsが初めてなので、MVCコンベンションに慣れています。)
どんなアドバイスも素晴らしいでしょう!
解決
はい、できます!これは名前付きルートの場合です!あなたがしなければならないのは、あなたのroute.rbでこのリンクを追加することだけです:
map.asked 'profiles/:id/asked', :controller => 'profiles', :action => 'asked'
このルートは、ask_path(:id => @profile)で呼び出すことができます。ビューでlink_toを変更するだけです。
link_to "Profile", asked_path(:id => @profile)
Routes.RBファイル自体から引き出しただけなので、私はこれにふさわしくありません。自動生成ルートを注意深く見れば、RBこれで表示されます。
# Sample of named route:
# map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
# This route can be invoked with purchase_url(:id => product.id)
あなたがそれをもっと一般的にしたいなら、私はそれを試していません。しかし、それでも私はそれが機能するはずだと思います:
map.routeany ":controller/:id/:action"
そして、見解では:
link_to "Route to something...", routeany_path(:controller => "somecontroller", :action => "someaction", :id => @somecontroller)
とにかく、乾杯! :)