Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically construct RESTful route using Rails

I'm trying to write a helper method that accepts the name of a plural resource and returns a corresponding link. The essence of the method is:

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

—Clearly the resource_path part above doesn't work. What I'd like is to be able to pass foos to get foos_path and bars to get bars_path etc. How can I do that? I can't quite work out the syntax.

like image 704
John Topley Avatar asked Aug 25 '26 12:08

John Topley


2 Answers


def get_link(resource)
  link_to "#{resource.capitalize}", send("#{resource}_path")
end
like image 87
Maximiliano Guzman Avatar answered Aug 28 '26 01:08

Maximiliano Guzman


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

The to_s call on resource is to support passing symbols as resource. So

get_link("foos")

will work and also

get_link(:foos)
like image 22
Michael Avatar answered Aug 28 '26 01:08

Michael