Пожалуйста, посмотрите на два примера ниже:
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"
Как мне вернуть путь вместо строки? Мне нужно вызвать путь к контроллеру от моего помощника приложения.
С уважением. Асбьорн Морелл
send(self.controller_name.to_s + "_path")
если вы не используете send on self, он отправляется в Kernel, что вам и нужно. Я могу работать, хотя, в зависимости от точного контекста.
Просто предположение, но что-то вроде:
method = self.controller_name.to_s + '_path' self.send(method.to_sym)
, вероятно, добьется цели. Метод send принимает символ и выполняет метод, соответствующий этому символу, для целевого объекта.
send
Если у вас есть экземпляр ActiveRecord для работы, возможно, <a href="http://api.rubyonrails.org/classes/ActionController/PolymorphicRoutes.html#M000509" rel="nofollow noreferrer">polymorhpic_path</a> подойдет вашим потребностям. Использование методов генерации пути с учетом маршрутизации предпочтительнее хрупких операций модификации строки.
<a href="http://api.rubyonrails.org/classes/ActionController/PolymorphicRoutes.html#M000509" rel="nofollow noreferrer">polymorhpic_path</a>