不能在初始值设定项中使用 url_helpers link_to
Can't use url_helpers link_to in initializer
所以我在需要使用 model_path
函数的初始化程序中扩展 String
:
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>
如果我删除该包含,我的应用程序视图将再次成功呈现。但是删除那个包含,我对字符串 class 的扩展不再起作用。
如何保持我的函数的功能(如果需要,我可以将它移到别处,只要我的所有模型都可以访问它)并保持呈现的视图?
将url_helpers纳入String
只是为了使用something_path
的方法就是用大炮打麻雀。 Rails 已经是一堆乱七八糟的 monkeypatching,不需要添加更多(你几乎可以保证会破坏某些东西)。
降低影响力并使用 url 助手而不将它们混入:
Rails.application.routes.url_helpers.user_path
我还建议根本不要延长 String
。如果您想添加新的与字符串相关的功能(例如 upcase
如果它不存在的话),这是一个可以原谅的例外。好像不是这样,就别做了
要添加上一个答案,您可以在匹配的 URL 上使用 Rails.application.routes.url_helpers
,只需添加路由 :as
,如下例所示:
get "sessions/destroy/:param_id", as: :logout
因此您可以按如下方式使用它:
Rails.application.routes.url_helpers.logout_path(:param_id => your_value)
这与 url_for
的作用相同
希望这会有所帮助
所以我在需要使用 model_path
函数的初始化程序中扩展 String
:
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>
如果我删除该包含,我的应用程序视图将再次成功呈现。但是删除那个包含,我对字符串 class 的扩展不再起作用。
如何保持我的函数的功能(如果需要,我可以将它移到别处,只要我的所有模型都可以访问它)并保持呈现的视图?
将url_helpers纳入String
只是为了使用something_path
的方法就是用大炮打麻雀。 Rails 已经是一堆乱七八糟的 monkeypatching,不需要添加更多(你几乎可以保证会破坏某些东西)。
降低影响力并使用 url 助手而不将它们混入:
Rails.application.routes.url_helpers.user_path
我还建议根本不要延长 String
。如果您想添加新的与字符串相关的功能(例如 upcase
如果它不存在的话),这是一个可以原谅的例外。好像不是这样,就别做了
要添加上一个答案,您可以在匹配的 URL 上使用 Rails.application.routes.url_helpers
,只需添加路由 :as
,如下例所示:
get "sessions/destroy/:param_id", as: :logout
因此您可以按如下方式使用它:
Rails.application.routes.url_helpers.logout_path(:param_id => your_value)
这与 url_for
的作用相同希望这会有所帮助