我是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
样式,而不是我想要。
任何帮助都非常感谢!
答案 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
。
我添加了它,重新启动了我的服务器,我的新布局正确呈现了特定的样式表。
但是,我仍然需要弄清楚这个预编译代码到底做了什么以及为什么需要它。任何指导/澄清都表示赞赏。