Rails:如何为特定布局加载特定样式表?

3
我是Rails的新手,我在尝试加载一个特定的样式表时遇到了问题。这个样式表被用作唯一的静态着陆页布局。例如:www.landing.com 加载 landing.scss.erb。
背景介绍:所有其他路由都指向不同的页面,这些页面有更复杂的布局,我将它们存储在 assets/stylesheets 中。例如:www.landing.com/A (a.scss.erb);www.landing.com/B (b.scss.erb)。着陆页样式表也在 assets/stylesheets 中,名为 landing.scss.erb。
在我的 home controller 中,我有一个 action 渲染着陆页。
def landing
        render :layout => "landing"
    end

在我的routes.rb文件中写上以下内容:get 'landing' => 'home#landing'views/layouts目录下有一个landing.html.erb文件,在这个文件的head标签中加入<%= stylesheet_link_tag 'landing.scss.erb', media: 'all' %>,尝试加载特定的样式表。但是,该页面未加载。
如果在我的application.scss帮助文件中包含@import "landing",那么由application.html.erb控制的所有其他页面都将获得landing.scss.erb的样式,这不是我想要的。
非常感谢您的帮助!

整个页面是不加载(即出现错误),还是只有样式表没有加载? - undefined
你的路由文件中是否使用了root方法? - undefined
嗨 @RyanK,landing.html.erb 页面正在加载,只是样式表没有加载。我还使用了一个 root 方法来转到 home#index,其中包含一个 case 语句,将用户引导到不同的子域,并使用 else 重定向到登录页面。 - undefined
没起作用,将它改成<%= stylesheet_link_tag '/assets/stylesheets/landing.scss.erb', media: 'all' %>。仍然没有应用样式。 - undefined
嗨 @dan-klasson,当我点击我想要加载的样式表(出现在源代码中)时,我收到的错误是:“No route matches [GET] "/assets/stylesheets/landing.scss.erb.css"”。 - undefined
显示剩余2条评论
1个回答

2
我找出了问题所在。我认为我的布局中调用样式表的语法不正确。
当我将其从<%= stylesheet_link_tag '/assets/stylesheets/landing.scss.erb', media: 'all' %>',media: 'all' %>更改为<%= stylesheet_link_tag 'landing', media: 'all' %>时,我得到了一个新的错误提示我添加Rails.application.config.assets.precompile += %w( landing.css )config/initializers/assets.rb
我添加了它,重新启动了服务器,我的新布局正确地渲染了特定的样式表。
然而,我仍然需要确定这个预编译代码正在做什么,以及为什么需要它。任何指导和澄清都将不胜感激。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接