我是 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.rb
中:get '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
样式,这不是我想要的。
任何帮助非常感谢!
我想出了什么问题。我相信我在布局中调用样式表的语法不正确。
当我从<%= 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
.
我添加了它,重新启动了我的服务器,我的新布局正确地呈现了特定的样式表。
但是,我仍然需要弄清楚这个预编译代码到底在做什么以及为什么需要它。任何指导/澄清不胜感激。