我可以强调一个网址路径

时间:2012-02-21 01:57:29

标签: ruby-on-rails ruby ruby-on-rails-3 polymorphic-associations

我想动态设置

的网址路径
  - application_path = @object.class.name.underscore + "_path"
  = link_to "<input type='button' value='Cancel' class ='bigbutton go_back'/>".html_safe, application_path(@application)

但我一直在

 undefined method `application_path' for #<#<Class:0x00000103d11d80>:0x00000103d04a68>

关于如何实现此行为的任何想法

2 个答案:

答案 0 :(得分:5)

在一般情况下,您可以使用Object#send来调用基于符号的方法(您可以使用to_sym从字符串中获取该符号):

send(application_path.to_sym, @application)

来自文档:

  

发送(符号[,args ...])→obj

     

调用symbol标识的方法,并将指定的参数传递给它。

但是在这种情况下,因为你的动态字符串足够简单,Rails有一个内置的方法来执行此操作,url_for

url_for(@application)

文档示例:

<%= url_for(@workshop) %>
# calls @workshop.to_param which by default returns the id
# => /workshops/5

注意:这是假设您的@application是路径与模型名称匹配的模型对象。在您的代码中,似乎有两个实例变量@object@application,但您尚未完全解释它们,因此您可能需要修改上述内容以传入@object而不是@application

答案 1 :(得分:0)

方法url_for完全符合您的要求。

url_for(@application)