Tig*_*ine 3 ruby ruby-on-rails ruby-on-rails-3
我想知道是否有一种方法可以扩展Rails为我的路线创建的现有路径助手。
我已经有了类似的东西/videos/view/:id,现在我需要将标签参数附加到该链接的任何位置(来自当前params集合)。
我现在看到的唯一解决方案是遍历所有视图,并将对助手的调用更改为如下所示:
view_videos_path(video, tag: params[:tag])
现在显然这需要一些工作,并且更简单的方法是使用如下所示的代码覆盖现有的路径助手:
def view_videos_path(video, opts)
view_videos_path(video, opts.merge(tag: params[:tag]))
end
Run Code Online (Sandbox Code Playgroud)
显然,将其放在模块中将导致无休止的递归,所以我想知道是否有关于此操作的最佳实践。
另外,您如何看待这种方法?我真的不确定像这样扩展辅助程序是否明智。但目前看来,这是合理的。
将它们super扔到帮助器模块中并调用,您也可以将其包含在其中,ApplicationController因此路径也可以在控制器中使用:
# app/helpers/path_helpers.rb
module PathHelpers
def view_videos_path(video, opts)
super(video, opts.merge(tag: params[:tag]))
end
end
class ApplicationController
include PathHelpers # we could also use helper_method for each method
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1365 次 |
| 最近记录: |