Dynamically construct RESTful route using Rails

試著忘記壹切 提交于 2019-12-10 10:55:35

问题


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.


回答1:



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



回答2:


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)



回答3:


If you want to construct a RESTful route with a member:

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


来源:https://stackoverflow.com/questions/744592/dynamically-construct-restful-route-using-rails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!