我正在尝试根据每个请求的 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 route helper 上添加这个参数(即使是表单中的 POST 请求......):
ressource_path(@ressource, :layout => get_layout_from_url())
whereget_layout_from_url()
是一个帮助器,它检查是否params['layout']
在 URL 中设置,验证然后返回它。
这绝对不是 DRY ......我如何覆盖每个路由助手以包含此行为而不在我的视图中编写任何额外的代码?我想在我的观点中调用标准的 rails 方法:ressource_path(@ressource), ...
还是有更聪明的方法来实现这一目标?
PS:我使用的是 rails 3.2.3
谢谢 !