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

时间:2016-02-28 03:03:47

标签: css ruby-on-rails sass

我是Rails的新手,并且无法获取布局(用作唯一的静态登录页面)来加载我想要与之关联的特定样式表。例如:www.landing.com加载landing.scss.erb

作为背景,所有其他路线将转到不同的页面,这些页面具有不同且更复杂的布局,我已将其存储在assets/stylesheets中。例如:www.landing.com/A(a.scss.erb); www.landing.com/B(b.scss.erb)。着陆页样式表也在assets/stylesheetslanding.scss.erb

在我的home controller我有一个呈现着陆页的操作:

def landing
        render :layout => "landing"
    end

在我的routes.rbget 'landing' => 'home#landing'

在我的views/layouts我有一个landing.html.erb文件,我在<%= stylesheet_link_tag 'landing.scss.erb', media: 'all' %>中使用head尝试加载此特定样式表,但是,目标网页是没有加载。

如果在我的application.scss帮助文件中,我添加了@import "landing",那么application.html.erb所指示的所有其他网页都将获得landing.scss.erb样式,而不是我想要。

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:1)

我弄清楚出了什么问题。我相信我在布局中调用样式表的语法不正确。

当我从<%= 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

我添加了它,重新启动了我的服务器,我的新布局正确呈现了特定的样式表。

但是,我仍然需要弄清楚这个预编译代码到底做了什么以及为什么需要它。任何指导/澄清都表示赞赏。