Подтвердить что ты не робот

Как динамически называть маршруты помощником в рельсах?

Например, я построил строку под названием "new_work_path", теперь я хочу назвать этот помощник как метод.

Я пробовал send("new_work_path", vars) и вызывал одну и ту же отправку со многих объектов. Но я не думаю, что нашел подходящий объект для вызова этих помощников.

Чтобы сделать object.send("new_work_path", vars), какой объект мне нужно искать?

Я пытался найти это в Интернете некоторое время, но ничего не мог найти. Если кто-то может осветить некоторые огни на этом, это было бы здорово!

Спасибо!

4b9b3361

Ответ 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)

Который, кажется, предлагает некоторый синтаксический сахар также.