各リクエストの URL で渡された GET パラメータに従って、アプリケーションのレイアウトを変更しようとしています&layout=name_of_the_layout
。
そして私の application_controller で:
class ApplicationController < ActionController::Base
layout :get_layout_from_params
private
def get_layout_from_params
if params['layout']
params['layout']
else
'application'
end
end
end
正常に動作しますが、ユーザーがアプリケーションをナビゲートするときにレイアウトを「永続化」するには、ビューの各 Rails ルート ヘルパーにこのパラメーターを追加する必要があります (フォームの POST リクエストの場合でも…)。
ressource_path(@ressource, :layout => get_layout_from_url())
whereは、URL に が設定されているかどうかを確認し、検証してから返すget_layout_from_url()
ヘルパーです。params['layout']
これは間違いなく DRY ではありません...ビューに追加のコードを記述せずに、すべてのルートヘルパーをオーバーライドしてこの動作を含めるにはどうすればよいですか? ビューで標準の Rails メソッドを呼び出したい:ressource_path(@ressource), ...
または、これを達成するためのよりスマートな方法はありますか?
PS:レール3.2.3を使用しています
ありがとう !