2014-03-03 45 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%>部分,并且它工作正常。标记为已接受。 –