: foo => self.controller_name.to_s + "_path" не возвращает путь - PullRequest
0 голосов
/ 10 июля 2009

Пожалуйста, посмотрите на два примера ниже:

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"

Как мне вернуть путь вместо строки? Мне нужно вызвать путь к контроллеру от моего помощника приложения.

С уважением. Асбьорн Морелл

Ответы [ 3 ]

3 голосов
/ 10 июля 2009
 send(self.controller_name.to_s + "_path")

если вы не используете send on self, он отправляется в Kernel, что вам и нужно. Я могу работать, хотя, в зависимости от точного контекста.

1 голос
/ 10 июля 2009

Просто предположение, но что-то вроде:

method = self.controller_name.to_s + '_path'
self.send(method.to_sym)

, вероятно, добьется цели. Метод send принимает символ и выполняет метод, соответствующий этому символу, для целевого объекта.

0 голосов
/ 10 июля 2009

Если у вас есть экземпляр ActiveRecord для работы, возможно, <a href="http://api.rubyonrails.org/classes/ActionController/PolymorphicRoutes.html#M000509" rel="nofollow noreferrer">polymorhpic_path</a> подойдет вашим потребностям. Использование методов генерации пути с учетом маршрутизации предпочтительнее хрупких операций модификации строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...