2009-04-13 13 views
2

複数のリソースの名前を受け入れ、対応するリンクを返すヘルパーメソッドを作成しようとしています。この方法の本質は次のとおりです。Railsを使ってRESTfulなルートを動的に構築する

def get_link(resource) 
    link_to "#{resource.capitalize}", resource_path 
end 

—明らかに上記resource_path一部が動作しません。私が望むのは、foosfoos_pathbarsを渡してbars_pathなどを得ることです。どのようにすればいいですか?私は構文を理解することはできません。

答えて

7

def get_link(resource) 
    link_to "#{resource.capitalize}", send("#{resource}_path") 
end 
+0

おかげで、素晴らしい作品。興味のない場合は、この時点で送信メッセージの受信者は何ですか? –

+1

私自身の質問に答えるために、受信者が指定されていないときはselfです。ヘルパーメソッドのため、この場合ActionView :: Baseです。 –

2
 
def get_link(resource) 
    link_to(resource.to_s.titleize, send("#{resource}_path")) 
end 

リソース上のto_sコールは、リソースとして渡すシンボルをサポートすることです。 だから

 
get_link("foos") 

がうまくいくとも

 
get_link(:foos) 
0

あなたがRESTfulなメンバーとルート構築したい場合:

send("edit_#{resource}_path".to_sym, @resource) 
関連する問題