我可以脱离rails资产管道吗?

时间:2017-05-12 20:35:51

标签: html css ruby-on-rails

在我的Rails webapp中,我希望有一个只从特定的css / scss文件获取其css的视图。我在这里尝试了几种建议的解决方案,但没有任何解决方案。

但是,我是否可以将example.css.scss文件放在assets / stylesheets目录之外,并将视图文件example.html.erb限制为example.css.scss样式,仅用于example.html.erb ?

根据我的理解,通过阅读rails asset pipeline myapp / app / assets目录中的所有文件从application.css文件继承其css规则,并在生成控制器时创建视图文件的相应css文件,css文件等。

我使用Ruby on Rails创建了一个webapp。该应用程序几乎完成并上演。我知道登陆页面对webapp来说是一个不错的开场白。

我的目标是为webapp创建登录页面。着陆页包含一个带有文本中心链接的背景图像,我想将其链接到webapp的主页,而不从application.css文件接收任何样式。

基本上我希望这个视图文件与application.css文件无关。

提前致谢。

2 个答案:

答案 0 :(得分:0)

虽然可能有理由使用完全不同的css文件而不是资产管道的一部分(例如当rails重启时登陆页面工作,保持登陆页面轻量化等),我的猜测是你和让事情变得更有动力。

我假设你的大多数应用都有与导航页面冲突的样式,所以如果app中的样式也适用于着陆页,那么着陆页看起来很有趣,而且副反之亦然。所以我的猜测是你正在寻找一种方法让一些样式适用于该应用程序,其他样式适用于着陆页。

为此,我首先会绕过您的常规布局 - 请参阅bypass application.html.erb in Rails app

然后,我会更新您的常规布局,以某种方式表明它是应用程序而不是登录页面。有很多方法可以做到这一点,但我可能会做以下事情:

application.html.erb:

<body class='app'><!-- etc. -->

landing_page.html.erb:

<body class='landing_page'><!-- etc. -->

然后,在您的scss文件中,更新它:

application.css.scss:

body.app {
  /* All your regular app styles */
}

body.landing_page {
  /* All your landing page styles */
}

当然你可以将它们分成多个文件等。

<强> TL; DR 除非您遇到加载时间问题,或者您还有其他原因导致您真的不希望为目标网页加载应用程序样式,那么只需将它们放在一起,但要确定样式的范围,以便它们不会# 39;当他们不应该适用时。

答案 1 :(得分:0)

您已经在Rails域中工作,因此继续留在该域中可能会更容易。

在我看来,最好/最简单的方法是创建一个欢迎控制器。在控制器中创建空索引操作以及该操作的视图。您正在创建的视图看起来相当简单,因此您可以使用welcome_为class / id名称(看起来不像很多)添加前缀,这样就可以将它们与普通的class / id名称区分开来。主页文本的链接将指向该特定控制器的索引操作。

然后,您可以在routes.rb文件中创建根路由以指向welcome #index。