2009-04-13 10 views
2

Ich versuche eine Hilfsmethode zu schreiben, die den Namen einer Plural-Ressource akzeptiert und einen entsprechenden Link zurückgibt. Das Wesen des Verfahrens ist:RESTful-Route dynamisch mit Rails erstellen

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

— Klar, dass der resource_path Teil oben funktioniert nicht. Was ich möchte, ist foos zu übergeben foos_path und bars zu bekommen bars_path usw. Wie kann ich das tun? Ich kann die Syntax nicht ganz ausarbeiten.

Antwort

7

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

Danke, funktioniert super. Interessant, was ist der Empfänger der Sende-Nachricht an dieser Stelle? –

+1

Um meine eigene Frage zu beantworten - wenn kein Empfänger angegeben ist, dann ist es selbst, was in diesem Fall ActionView :: Base ist, weil es in einer Hilfsmethode ist. –

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

Die Ressourcen to_s nennen Begegnen Symbole als Ressource zu unterstützen. So

 
get_link("foos") 

arbeiten und auch

 
get_link(:foos) 
0

Wenn Sie eine RESTful Route mit einem Mitglied konstruieren wollen:

send("edit_#{resource}_path".to_sym, @resource)