gpt4 book ai didi

ruby-on-rails - 覆盖 rails helper route 方法以从 GET 参数设置布局

转载 作者:行者123 更新时间:2023-12-04 18:20:27 26 4
gpt4 key购买 nike

我正在尝试根据每个请求的 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

它工作正常,但是当用户在应用程序中导航时“保持”布局,我需要在我的 View 中的每个 rails route helper 上添加这个参数(即使是表单中的 POST 请求......):
ressource_path(@ressource, :layout => get_layout_from_url())

在哪里 get_layout_from_url()是一个帮助检查 params['layout']在 URL 中设置,验证然后返回它。

这绝对不是 DRY ......我如何覆盖每个路由助手以包含此行为而不在我的 View 中编写任何额外的代码?我想在我的观点中调用标准的 rails 方法: ressource_path(@ressource), ...
还是有更聪明的方法来实现这一目标?

PS:我使用的是 rails 3.2.3

谢谢 !

最佳答案

有旧的和已弃用的 default_url_options现在替换为 url_options :

class ApplicationController < ActionController::Base
def url_options
{ :layout => validate_layout }.merge(super)
end

def validate_layout
# some stuff reusable
params[:layout]
end
end

如果它不适合,它是接近的。

关于ruby-on-rails - 覆盖 rails helper route 方法以从 GET 参数设置布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10796572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com