2011-06-24 12 views
3

私は、各ビューが特定の規則に従って名前が付けられたコンテナにラップされるレイアウトの標準を作成することに興味があります。Rails 3:現在のビューのパスヘルパーを取得しますか?

ただ、例えば、私が持っていた場合:基本的に私はルートを使用したいのですが、そう

<div id="foos_view"> foos#index here </div> 
<div id="foo_view"> foos#show here </div> 
<div id="new_foo_view"> foos#new here </div> 
<div id="edit_foo_view"> foos#edit here </div> 

resources :foos 

を、私はそうのようなdiv要素内にラップするビューを望みます'view'を 'path'に置き換えてください。

私の質問は、現在のビューのルート名を取得する方法はありますか?

e。私の要求がexample.com/foos/newであれば、ビューまたはコントローラで呼び出すことができるものがあれば、new_foo_pathを返すでしょうか?

ありがとうございます!

答えて

5

パスヘルパーは、単にpath_for()を呼び出して必要なパラメータを入力するだけなので、これを行うのは簡単な方法ではありません。逆の方法で呼び出す必要はありません。

しかし、これはRubyなので、あなたが望む文字列を返すための簡単なヘルパーを書くのはかなり簡単です。現在のコントローラー名はcontroller.controller_nameで、アクション名はcontroller.action_nameでアクセスできます。

このような何かがあなたの作業を行う必要があります

def html_id 

    string = "" 

    if controller.action_name =~ /new|edit/ 
     string += controller.action_name + "_" 
    end 

    if controller.action_name =~ /index|create/ 
    string += controller.controller_name 
    else 
    string += controller.controller_name.singularize 
    end 

    return string += "_view" 

end 
+0

ビンゴ。私は 'controller.controller_name'メソッドを認識していませんでした。 – Andrew

関連する問題