您可以通过以下五个步骤来实现这一目标
注意:我假设 layout1 layout2 和 layout3 是清单文件
比如 application.js 和 application.css
1) 为新布局创建清单文件
在 assets/javascripts/ 上创建以下 js 文件
layout1.js
//= require_tree ./layout1
layout2.js
//= require_tree ./layout2
layout3.js
//= require_tree ./layout3
在资产/样式表上创建以下 css 文件
layout1.css
/*
*= require_tree ./layout1
*/
layout2.css
/*
*= require_tree ./layout1
*/
layout3.css
/*
*= require_tree ./layout1
*/
2) 将此行添加到config/initializers/assets.rb
Rails.application.config.assets.precompile += %w( layout1.js layout1.css layout2.js layout2.css layout3.js layout3.css )
3) 在各个布局中包含以下行
layout1.html.erb
<%= stylesheet_link_tag 'layout1', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'layout1', 'data-turbolinks-track' => true %>
layout2.html.erb
<%= stylesheet_link_tag 'layout2', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'layout2', 'data-turbolinks-track' => true %>
layout3.html.erb
<%= stylesheet_link_tag 'layout3', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'layout3', 'data-turbolinks-track' => true %>
4) 在控制器中包含布局
layout_one_controller.rb
class LayoutOneController < ApplicationController
layout 'layout1'
def index
end
end
layout_two_controller.rb
class LayoutTwoController < ApplicationController
layout 'layout2'
def indiex
end
end
layout_three_controller.rb
class LayoutThreeController < ApplicationController
layout 'layout3'
def index
end
end
5) 重新启动您的应用程序