2014-03-03 60 views
0

我收到此錯誤:未定義的方法`屈服」 - Rails的

undefined method ` yield' for #<#<Class:0x007fccb4710880>:0x007fccb43f0308> 

試圖使用content_for幫手應用程序佈局來渲染頁面的具體樣式表時。

我index.html.erb模板代碼包含:

<% content_for :head do %> 
    <%= stylesheet_link_tag "inspection.css" %> 
<% end %> 

我application.html.erb代碼包含:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Plastics</title> 
    <%= stylesheet_link_tag "application", :media => "all" %> 
    <%= javascript_include_tag "application" %> 
    <%= csrf_meta_tags %> 
    <%= yield :head %> 
</head> 
<body> 
    <div id="wrapper"> 
     <%= yield %> 
    </div> 
</body> 
</html> 

我關於Ruby運行Rails的3.2.15 2.0.0- p195

我試過切換到Ruby 1.9.3-p429和其他版本的rails,包括3.2.12,3.2.13,..沒有運氣

我在其他應用程序中使用過這麼多次,沒有任何問題。

+1

請發佈整個錯誤stacktrace。 – Agis

+0

您需要在這裏提供更多的上下文,因爲必須有其他代碼混淆這一點。 – tadman

回答

3

我假設你已經從終端直接複製並粘貼了「未定義的方法」錯誤。在開引號和yield這個詞之間似乎有一個空格,這讓我認爲Ruby正試圖調用一個名稱以空格開頭的方法。

通常情況下,這是不容易做到的,但您可以在使用send力,作爲示範:

Object.new.send(' yield') 
# NoMethodError: undefined method ` yield' for #<Object:0x007fc413258968> 

所以說:給你寫你的佈局方式,爲什麼紅寶石/ ERb的包括空間在它認爲是方法的名稱的開始?

我的猜測是那裏有某種流氓無形的角色會拋棄解析。嘗試重新輸入包含yield語句的兩行,看看它是否開始工作。

+0

就是這樣。代碼編輯器增加了一些不可見的東西。我刪除並重新創建了佈局的<%= yield:head%>部分,並且它工作正常。標記爲已接受。 –