Rails - 在所有页面上加载的资产

时间:2014-07-15 13:15:19

标签: ruby-on-rails asset-pipeline

所以我有点迷失在这里。我的所有CSS / SCSS文件都在我的应用程序的各处加载。但我有两个不同的设计(正面和背面),我想分开。我怎样才能做到这一点?
加上所有js / css都被加载,即使它们没有被使用,也是无用的。我怎么能控制它?

2 个答案:

答案 0 :(得分:1)

在您的application.jsapplication.css中,默认情况下会有一个指令:require_tree。它将加载您稍后要预编译的所有js和css文件。这样做是为了使客户端只下载一次资产数据包(因为它将被浏览器缓存)并使应用程序更快。

如果要为每个控制器加载特定的javascript或样式表文件,请删除require_tree指令并将其包含在各自的控制器中:

<%= javascript_include_tag params[:controller] %> or <%= stylesheet_link_tag params[:controller] %>

检查出来:http://guides.rubyonrails.org/asset_pipeline.html#controller-specific-assets

答案 1 :(得分:1)

您想要做的是控制您的布局。

由于你的问题目前过于宽泛,某人没有给你一个体面的具体答案,这就像是说'告诉我有关天体物理学的信息,我现在不明白如何发射火箭'。

我建议从有关布局的导轨指南开始,然后在您更好地理解之后再回过头来提出更具体的问题。

http://guides.rubyonrails.org/layouts_and_rendering.html

RailsCasts还有一个很棒的11分钟视频,可以帮助您理解和控制资产管道:http://railscasts.com/episodes/279-understanding-the-asset-pipeline

你要去的地方就是说你的应用程序是关于管理项目的。

  1. 制作一个名为project-manifest.css的application.css文件的副本,并使用与该application.css相同的结构来加载您想要的样式表。

  2. 制作views / layouts / application.html.erb的副本以说明projects-layout.html.erb

  3. 在新的projecs-layout文件中,更新对css的引用以指向project-manifest.css

  4. 指出您的控制器代码以使用新布局

  5. 说你有:

    # app/controllers/ProjectsController.rb
    
    def show
      # code here
      # rails does a default render layout: 'application', its overwritten by adding an explict render
      render layout: 'project-layout'
    end