2013-10-13 92 views
0

我遵循Michael Hartl的Ruby on Rails教程,我堅持一個不適合我的例子。 我嘗試從.erb文件中刪除重複代碼,以便代碼僅存在於application.html.erb文件中。使用舊的home.html.erb文件,一切都很順利(當我爲家庭做一個GET時,顯示的內容就是這樣),但是用我應該用來消除重複代碼的內容時,沒有顯示任何內容。經過測試,我發現即使從舊文件中刪除標題標籤也足以使內容消失。Ruby on Rails中的.erb文件中是否需要html結構?

任何想法爲什麼發生這種情況?該教程是錯誤的還是我錯過了什麼?

application.html.erb:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Title | <%= yield(:title) %></title> 
    <title> 
    <%= stylesheet_link_tag "application", :media => "all" %> 
    <%= javascript_include_tag "application" %> 
    <%= csrf_meta_tags %> 
</head> 

<body> 
<%= yield %> 

</body> 
</html> 

home.html.erb

<% provide(:title, 'Home') %> 
<h1>Sample App</h1> 
<p> 
This is the home page for the 
<a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> 
sample application. 
</p> 

老home.html.erb:

<% provide(:title, 'Home') %> 
<!DOCTYPE html> 
<html> 
<head> 
<title>Title | <%= yield(:title) %></title> 
</head> 
<body> 
<h1>Sample App</h1> 
<p> 
This is the home page for the 
<a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> 
sample application. 
</p> 
</body> 
</html> 
+0

什麼是你的'home.html.erb'?它是一個佈局嗎? –

+0

你可以顯示控制器嗎? – crazybob

+0

我的home.html.erb是一個視圖,application.html.erb是我的佈局。 – Panagiotis

回答

1

與佈局文件的問題是,你有兩個<title>標籤,一個包含應用程序的標題,以及一個敞開。如果您將其中一個打開,問題將得到解決。

0

您應填寫申請佈局在控制器中。換句話說,將layout 'application'添加到您的控制器。例如:

class StaticPagesController < ApplicationController 
    layout 'application' 

    def home 
    end 

    def help 
    end 

    def about 
    end 
end 
+0

我做到了,但還不夠 – Panagiotis