gpt4 book ai didi

ruby-on-rails - rails 4 : Layout file outside 'views/layouts' folder

转载 作者:行者123 更新时间:2023-12-02 21:00:14 24 4
gpt4 key购买 nike

默认情况下,rails 在 views/layouts 路径中查找布局 View 文件。但是,我想将其更改为特定 Controller 的 app/themes/theme-name/layout.html.erb 。为此,我使用以下代码:

class ContentController < ApplicationController
before_filter :set_theme

def set_theme
theme = "default"
prepend_view_path "app/themes/#{theme}" # change default view path
self.class.layout "../../themes/#{theme}/layout" # change default layout path
end
end

但是这段代码抛出以下错误:

Missing template layouts/../../themes/default/layout with {:locale=>[:en], :format .....

它仍在查找布局文件夹。我该如何解决这个问题。

最佳答案

替换此行:

self.class.layout "../../themes/#{theme}/layout"

这样:

self.class.layout Rails.root+"/themes/#{theme}/layout"

<罢工>

更新:

默认情况下,Rails 在 app/view/layouts 中查找布局文件夹。这是配置使用的路径。添加另一个路径,如 app/themes/theme-name/layouts到查看路径列表,您需要将其添加到 config/application.rb像这样:

  class Application < Rails::Application
...
config.paths["app/views"] << "app/themes/theme-name/"
...
end

重新启动服务器。现在,如果 app/themes/theme-name/layouts 中有一个布局文件“alpha.html.erb”文件夹中,您可以在 Controller 中使用它,如下所示:

layout "alpha"

Rails 将查找 layouts/alpha.html.erb在配置的路径中。

您始终可以即兴创作以满足您的需求。希望对您有所帮助。

关于ruby-on-rails - rails 4 : Layout file outside 'views/layouts' folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687035/

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