2014-01-28 142 views
1

你好的StackOverflow社區應用寬視野加上紅寶石具體來看,渲染on Rails的

我想知道我如何能實現on Rails的Ruby的應用廣泛多頁的特定視圖。

我將所有的導航欄,頁腳等放在應用程序全視圖(application.html.erb)中,因此它充當基本佈局(我認爲應用程序範圍視圖的真正目的)到我的應用程序的每個視圖。

從我現在看到的情況來看,Rails在運行時將代碼說,應用程序範圍視圖和主頁/索引視圖。樣式表,腳本等鏈接是沒有問題的,我很高興他們在應用程序範圍內導入,節省時間。

如何指定Rails導入特定視圖的資產&內容,例如home/index?

如何以如下方式組成代碼?

應用廣視角(meta標籤,導航欄,標題,全球樣式表)+網頁具體內容(標題,正文)+應用廣視角(頁腳,Java腳本)

我想接近它就是分裂最好的方法它到標題,正文和頁腳。我應該創建另一個文件並讓它充當頁腳並讓app.html.erb成爲頁眉嗎?

謝謝!

回答

3

最常見的方法是在您的Layout中同時包含頁眉和頁腳,生成頁面內容。

如果您的資產只包含在特定頁面中,或者需要在佈局中的其他位置顯示,則可以使用content_foryield來實現此目的。

例如,在你的頁面視圖:

<% content_for :title do %>The title of this page!<% end %> 

而在你的佈局,在那裏你想要的標題標籤輸出:

<title><%= content_for?(:title) ? yield(:title) : "Default page title goes here" %></title> 

同樣的方法可以用於Java腳本或您只想包含在特定頁面上的樣式表。

例如,在一些網頁需要的jQuery:

<% content_for :per_page_javascripts do %>  
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<% end %> 

而且在佈局(頁眉或頁腳,無論你認爲JS應該去):

<%= yield(:per_page_javascripts) %> 

這裏有一個指南,可能會有所幫助: http://guides.rubyonrails.org/layouts_and_rendering.html#using-the-content-for-method

+0

謝謝。我對MVC概念和RoR完全陌生。難怪,我不明白「收益率」是什麼。現在,我知道了。很方便。我做的最後一個項目,我將所有代碼來回複製。這就是爲什麼在看到ASP.NET MVC如何工作後,我質問自己「這個工作是否會在Rails上工作?」它確實如此。謝謝! – Adam

+0

很高興爲您提供幫助。所有與您的項目最好:0) – doctororange