:foo => self.controller_name.to_s +“_ path”不返回路径

时间:2009-07-09 20:10:11

标签: ruby-on-rails ruby

请看下面的两个例子:

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

3 个答案:

答案 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可能符合您的需求。使用路由感知路径生成方法比脆弱的字符串修改操作更可取。