Как динамически называть маршруты помощником в рельсах?
Например, я построил строку под названием "new_work_path", теперь я хочу назвать этот помощник как метод.
Я пробовал send("new_work_path", vars)
и вызывал одну и ту же отправку со многих объектов. Но я не думаю, что нашел подходящий объект для вызова этих помощников.
Чтобы сделать object.send("new_work_path", vars)
, какой объект мне нужно искать?
Я пытался найти это в Интернете некоторое время, но ничего не мог найти. Если кто-то может осветить некоторые огни на этом, это было бы здорово!
Спасибо!
Ответы
Ответ 1
попробуйте Rails.application.routes.url_helpers.send(...)
Изменить:
Как упоминал Ларри Гебхардт mentioned, модуль url_helpers
больше не кэшируется.
Другой обходной путь будет:
cached_helpers = Class.new do
include Rails.application.routes.url_helpers
include Rails.application.routes.mounted_helpers
end.new
cached_helpers.send(...)
Ответ 2
Мой плохой, как предложил @tadman, я снова попытался использовать send(:new_work_path, args)
, и это сработало! Должно быть, это было неправильно.
Прежде чем сразу выяснить, что отправить, я нашел другое решение, которое также представляет интерес:
new_polymorphic_path(Work, args)
Который, кажется, предлагает некоторый синтаксический сахар также.