2014-07-21 118 views
1

我目前正在Rails中開發一個簡單的博客應用程序。我使用了兩種不同的佈局,一種用於我的文章頁面(application.html.erb),另一種用於靜態頁面(welcome.html.erb),例如家庭等。在Rails中設計身體元素

歡迎佈局需要以下樣式:

body { 
    padding-top: 50px; 
    padding-bottom: 20px; 
} 

這些特殊的屬性使用文章佈局搞砸了其他頁面。

1.對於這種情況,您是否需要針對不同佈局/頁面中存在的相同類型元素使用不同樣式?

2.控制器指定的樣式表(例如welcome.css.scss和article.css.scss),如果它們全部編譯成一個application.css文件,有什麼意義?

我想更好地理解Rails資產管道。我使用的鐵軌4.1.1和紅寶石2.1.1p76

非常感謝您

+2

爲什麼不能在增加樣式的歡迎佈局中將身體放在身體上? –

+0

是的,謝謝我認爲那樣做。 –

回答

1

如果你看看你的佈局,你將有一個<%= stylesheet_link_tag "application", media: "all" %>基本上告訴Rails從application.css現在載入樣式如果你看看你的application.css文件,你會有*= require_tree .,它會加載應用程序/資產/樣式表中的所有樣式表,因此您的樣式將應用於這兩種佈局。

修復

由於您使用單獨的佈局,所以簡單的解決方案將是您的佈局使用不同類別或ID(因爲它會在頁面上獨一無二的,因爲@MrYoshiji指出)

body#home{//styles for home layout} 

body#welcome{//styles for welcome layout} 
+1

當HTML頁面中只有一個''標記時,在body上使用HTML'class'是沒有意義的。一個HTML'id'在這裏更合適 – MrYoshiji

+0

@MrYoshiji類也可以工作,但是使用id會很有意義,因爲它是唯一的。謝謝! – Mandeep

0
  1. Rails layouts per action?

  2. 因爲開發人員更容易瞭解這些樣式所指的是什麼。你會經常做這樣的事情:

one.html.erb

<div id="one"> 
    <!-- code --> 
</div> 

one.css.scss

#one { 
    // styling 
} 

這樣在one.css.scss樣式僅適用於正確的html頁面。