【问题标题】:Override rails url helper method globally全局覆盖 rails url helper 方法
【发布时间】:2017-10-26 06:12:52
【问题描述】:

我有一条在我的应用程序中使用的路由 foo_path => /foo

现在我正在将此路由迁移到另一个应用程序,该应用程序以不同的方式定义了 URL 路径 /deep/path,并且还将 foo_path 控制器过去使用的 query_paramters 命名为不同的名称。

我希望重写 foo_path 方法,以便现在它在视图、控制器中调用时返回 /deep/path 而不是 /foo ...同时转换一些查询参数名称

我在 stackoverflow 上找到了一些答案,但他们使用的方法似乎不再适用于我目前使用的 rails 4.2.7 版本。

如何在所有应用程序中覆盖 foo_path 方法,以便它在 rails 4.2.7 中返回 /deep/path 而不是 /foo,同时能够操作 query_parameters

【问题讨论】:

  • 您想更改foo_path 以指向一个完全不同的应用程序吗?如果是这样,您可以将其从routes.rb 中删除并在ApplicationHelper 中定义它。

标签: ruby-on-rails ruby ruby-on-rails-4 actionpack


【解决方案1】:

你需要做的是有一个命名的路线。

例如,假设您的旧路径被标识为foo,而您以foot_path 访问它。

然后你可以在 routes.rb 中做这样的事情。

'/bar', to: 'controller#action', as: :foo

这样foo_path 现在将提供/bar

参考:http://guides.rubyonrails.org/routing.html#overriding-the-named-helpers

【讨论】:

  • 我试图简化问题中的问题,但实际上,我需要 foo_path 方法返回 /deep/path/ 并在查询参数名称中进行一些转换。我将更新我的问题以更好地反映该问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多