我收到此错误:
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 2.0.0-p195上运行Rails 3.2.15
我尝试过切换到Ruby 1.9.3-p429和其他版本的rails,包括3.2.12,3.2.13,..没有运气
我在其他应用程序中多次使用过这个问题。
答案 0 :(得分:3)
我假设您已直接从终端复制并粘贴了“未定义的方法”错误。 open-quote和单词yield
之间似乎有一个空格,这让我觉得Ruby正试图调用名称以空格开头的方法。
通常,这并不容易,但你可以使用send
强制它,作为演示:
Object.new.send(' yield')
# NoMethodError: undefined method ` yield' for #<Object:0x007fc413258968>
所以:考虑到你编写布局的方式,为什么Ruby / ERb在它认为是方法名称的开头包含一个空格?
我的猜测是,那里有某种流氓看不见的角色正在抛弃解析。尝试重新输入包含yield
语句的两行,看看它是否开始工作。