2017-05-12 100 views
0

在我的Rails webapp中,我想要一個只從特定的css/scss文件中獲取其css的視圖。我已經在這裏嘗試了幾個建議的解決方案,但沒有用於我的工作。我可以擺脫軌道資產管道嗎?

但是,我能否將example.css.scss文件放置在assets/stylesheets目錄之外,並將視圖文件example.html.erb限制爲僅用於example.html的example.css.scss樣式。 ERB?

根據我的理解,通過閱讀rails asset pipeline myapp/app/assets目錄中的所有文件都從application.css文件中繼承了它的css規則,以及生成控制器時創建視圖文件,css文件時的相應css文件等等。

我已經使用Ruby on Rails創建了一個webapp。該應用幾乎完成並正在上演。我有一個想法,一個登陸頁面將是一個不錯的Web應用程序的開場白。

我的目標是爲webapp創建一個登錄頁面。目標頁面由一個背景圖片和一個以文本爲中心的鏈接組成,我想鏈接到webapp的主頁,並且不會從application.css文件接收任何樣式。

基本上我想這個觀點文件無關與application.css文件。

在此先感謝。

+0

*我的目標是爲我的應用程序創建一個登錄頁面。* - 爲什麼您需要登錄頁面的框架? –

+0

@ Mr.Alien,除非框架是爲應用程序 – alexanderbird

+0

@alexanderbird是的,除非它的應用程序 –

回答

0

雖然可能有原因,使用完全不同的css文件,這不是資產管道的一部分(例如着陸頁的工作,而軌道重新啓動時,保持着陸頁輕巧,等等),我的猜測是,你更通過獲得某些工作的動機。

我假設你已經有了樣式大部分的應用程序,將與着陸頁相沖突,所以如果從應用的樣式也適用於登陸頁面,登陸頁面看起來很滑稽,反之亦然。所以我的猜測是,您正在尋找一種方式將某些樣式應用於應用,其他樣式適用於着陸頁。

對於這一點,我想首先是繞過常規佈局 - 看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 除非你正在運行到加載時間的問題或者您有一些其他的原因,你真的真的不要不想爲着陸頁加載應用樣式,那麼只需將它們放在一起,但是需要對樣式進行範圍限制,以便在不適用時不適用。

0

您已經在Rails領域工作,所以可能會更容易繼續留在該域中。

在我看來,最好的/最簡單的事情就是創建一個受歡迎的控制器。在控制器中創建一個空索引操作,並在該操作中創建一個視圖。你創建的視圖看起來相當簡單,所以你可以在類/前綴名字前加上welcome_,這樣就可以將它們與你的普通類/ id名稱區分開來。主頁文本的鏈接將指向該特定控制器的索引操作。

然後,您可以在routes.rb文件中創建指向歡迎#索引的根路由。

+0

林不知道我明白。如果我通過rails g controller創建控制器歡迎索引 這將綁定welcome.css.scss來繼承application.css樣式規則。我需要登陸頁面完全獨立於myapp/app/assets/stylesheets和application.css文件中的文件。 您是否認爲我可以在資產目錄之外創建css文件example.css,然後在視圖文件中將它指向example.css文件? –

+0

是否有理由讓您的着陸頁樣式表獨立於應用樣式表?還是僅僅是這樣的CSS規則不衝突? – hashrocket

+0

這個問題特有的原因是我不想讓application.css中的css影響登錄頁面。 –