Я использую polimorphic_path, и это несколько багги. Этот метод требует некоторого вспомогательного маршрута, который не определен. Как я могу определить (например, обычный метод) собственный помощник маршрута, который будет использоваться как «model_name_path, model_name_url и т. Д.»?Как определить собственные помощники маршрутизации в рельсах 3?
5
A
ответ
2
Я знаю один возможный ответ для _path, но то же самое не работает для меня для _url. Кто-нибудь знает, почему?
# at the bottom of config/routes.rb
module ActionView::Helpers::UrlHelper
def model_name_path model, args={}
# your implementation
end
end
4
Это решение сработало для меня.
Добавить этот код в конец config/routes.rb
. Обязательно замените MyApp
на ваше имя приложения.
MyApp::Application.routes.named_routes.module.module_eval do
def model_name_path(*args)
# Your code here
end
def model_name_url(*args)
# Your code here
end
end
MyApp::Application.routes.named_routes.instance_eval do
@helpers += [:model_name_path, :model_name_url]
end
Эти пользовательские методы будут доступны в контроллерах, представлениях и тестах.
+1
в Rails 4: Rails.application.routes.named_routes.url_helpers_module.module_eval do ... – luckyjazzbo
О, я думаю, что это тоже работает для _url, просто потому, что я вызывал _url из контроллера, а не из представления. – Ben
Скажите, что у меня есть имя метода помощника user_links, где я указываю имя метода в соответствии с вашим, например. У меня есть модель Post. Мой код выглядит следующим образом: - ~ module ActionView :: Helpers :: UrlHelper def post_name_path post, args = {} # ваша реализация -> что именно должно быть? конец конец ~ – boddhisattva
Прошу прощения, я попытался использовать соответствующий блок кода, но каким-то образом не смог понять это в разделе комментариев. – boddhisattva