【问题标题】:Rails: How to load a specific stylesheet for a specific layout?Rails:如何为特定布局加载特定样式表?
【发布时间】:2016-06-11 05:34:44
【问题描述】:

我是 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 中,我有一个呈现登录页面的操作:

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 样式,这不是我想要的。

非常感谢任何帮助!

【问题讨论】:

  • 那么是整个页面没有加载(即出现错误)还是只是样式表没有加载?
  • 你也在路由文件中使用root 方法吗?
  • 嗨@RyanK,landing.html.erb 页面正在加载,只是样式表没有加载。我还使用root 方法转到home#index,其中包括将用户定向到不同子域的case 语句和else 重定向到登录页面。
  • 尝试为样式表放置“完整”路径。 IE。 “/assets/stylesheets/landing.scss.erb”。
  • 没用,改成<%= stylesheet_link_tag '/assets/stylesheets/landing.scss.erb', media: 'all' %>。仍然没有应用样式。

标签: css ruby-on-rails sass


【解决方案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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多