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

明らかにこれをモジュールに入れると、無限の再帰が発生するため、これを行う方法に関するベストプラクティスがあるかどうか疑問に思います。

また、アプローチについてどう思いますか?このようにヘルパーを拡張することが賢明かどうかはよくわかりません。しかし、現時点では、それは合理的に見えます。

4

1 に答える 1

5

それらをヘルパーモジュールに投げて を呼び出し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
于 2012-07-17T10:55:46.380 に答える