5


1

ルーティングに関する基本的なRuby on Railsの質問

関連モデルのないコントローラーがあります。 このコントローラーは、さまざまなモデルからのいくつかの情報に及ぶものです。 ページには特定のビューを定義するアクションがたくさんあります。 このコントローラーのルートを整理する最良の方法は何でしょうか?

私が望むのは、/ dashboard / somethingがダッシュボードコントローラーの任意のアクションを指すようにすることです。 新規/編集などのアクションではなく、任意(showstatsなど)。

試行錯誤しながら、次のようなものを作成しました。

map.dashboard 'dashboard/:action', :controller => 'dashboard', :action => :action

ヘルパーを使用してこれらのURLにアクセスできるようになりました。

dashboard_url('actionname')

このアプローチはうまく機能しているように見えますが、これは進むべき方法ですか? ヘルパーメソッド名がどのように生成されるのか、よくわかりません。 基本的なコントローラー「action_controller_url」と同じヘルパー名を生成する方法は? それはより一般的であり、コードの一貫性を高めます。

前もって感謝します。

3 Answer


5


ルートで `:action ⇒:action`キーを指定する必要はありません。これは既に行われています。 それ以外は、あなたがそれをどうやってやったかは問題ありません。

シンボルとして指定することもできます: dashboard_url(:actionname)、しかし、あなたはすでにそれを知っていました;)


2


すべてのダッシュボードアクションのヘルパーメソッドが必要な場合は、名前付きルートを使用してすべてのヘルパーメソッドを指定する必要があります。次に例を示します。

map.example_dashboard 'dashboard/example', :controller => 'dashboard', :action => 'example'
map.another_dashboard 'dashboard/another', :controller => 'dashboard', :action => 'another'

次に、railsは名前付きルートごとに1つの_urlヘルパーと1つの_pathヘルパーを生成します。 あなたのアプローチが好きですが、より柔軟でシンプルです。


0


_ 基本的なコントローラー「action_controller_url」と同じヘルパー名を生成する方法は? _

  map.action_controller(
    'action_controller',
    :controller => 'controller',
    :action => 'action',
    :conditions => { :method => :get }  # You can restrict the HTTP reqs allowed
  )