Так я простирающийся String
в инициализаторе, который требует model_path
функцию, которая будет использоваться:Невозможно использовать url_helpers link_to в инициализаторе
class String
def foo(bar)
...
link_to(baz, baz_path(baz))
end
end
Так, чтобы заставить его работать добавить
include Rails.application.routes.url_helpers
Проблема в том, что я не могу даже просматривать веб-сайт, потому что есть странные проблемы с использованием url_for
в другом месте:
wrong number of arguments (3 for 0..1)
</script>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
--<%= mathjax_tag %>------- this line is highlighted as the problem --
<%= csrf_meta_tags %>
</head>
<body>
Если я удалю эти включенные объекты, мои представления приложений снова будут отображены. Но удалите это include, и мое расширение для класса String больше не работает.
Как я могу сохранить функциональность своей функции (я в порядке с перемещением ее в другом месте, если это необходимо, до тех пор, пока она доступна для всех моих моделей), а также сохранить отображаемые представления?
Должно ли это быть в 'String'? Кажется, это плохая идея для меня. Попробуйте поместить его в отдельный класс. 'UrlUtil.foo (bar)' –
Другая идея: как насчет смешивания url_helpers? Используйте его напрямую: 'Rails.application.routes.url_helpers.user_path' –
В моделях можно использовать дубликаты [Can Rails Helpers (например, mymodel \ _path (model))] (http://stackoverflow.com/questions/ 341143/can-rails-routing-helpers-ie-mymodel-pathmodel-be-used-in-models) –