请看下面的两个例子:
irb(#<ActionView::Base:0x2863d58>):030:0> paintings_path
=> "/some-nice-alias-path"
irb(#<ActionView::Base:0x2863d58>):029:0> self.controller_name.to_s + "_path"
=> "paintings_path"
如何返回路径而不是字符串?我需要从我的应用程序助手调用控制器路径。
祝你好运。 AsbjørnMorell
答案 0 :(得分:3)
send(self.controller_name.to_s + "_path")
如果你不使用send on self,它会转到内核,这就是你想要的。自我可能会工作,具体取决于具体情况。
答案 1 :(得分:1)
只是一个猜测,但是像:
method = self.controller_name.to_s + '_path'
self.send(method.to_sym)
可能会做到这一点。 send
方法采用符号并执行与目标对象上的符号匹配的方法。
答案 2 :(得分:0)
如果您要使用ActiveRecord实例,则polymorhpic_path
可能符合您的需求。使用路由感知路径生成方法比脆弱的字符串修改操作更可取。