質問

これが私が今やっている方法です:

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 いくつか尋ねました questionS、だから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)

とにかく、乾杯! :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top