我可以强调一个网址路径

Mat*_*iby 1 ruby ruby-on-rails polymorphic-associations ruby-on-rails-3

我想动态设置一个url路径

  - application_path = @object.class.name.underscore + "_path"
  = link_to "<input type='button' value='Cancel' class ='bigbutton go_back'/>".html_safe, application_path(@application)
Run Code Online (Sandbox Code Playgroud)

但我一直在

 undefined method `application_path' for #<#<Class:0x00000103d11d80>:0x00000103d04a68>
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*Lee 5

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

send(application_path.to_sym, @application)
Run Code Online (Sandbox Code Playgroud)

来自文档:

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

调用由symbol标识的方法,并将指定的任何参数传递给它.

但在这种情况下,因为你的动态字符串足够简单,Rails有一个内置的方法来做到这一点,url_for:

url_for(@application)
Run Code Online (Sandbox Code Playgroud)

来自文档的示例:

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

注意:这假设您@application是一个模型对象,其中路径与模型名称匹配.在你的代码似乎有两个实例变量,@object@application,但是你有没有充分的解释,所以你可能需要修改上述通过在@object代替@application.