我正在关注ruby on rails教程。我的注册页面只收到错误。
undefined local variable or method `object' for #<#<Class:0x007feb442f6a98>:0x007feb442f8438>
提取的来源(第1行):
1: <% if object.errors.any? %>
2: <div id="error_explanation">
3: <h2>
4: <%= pluralize(object.errors.count, "error") %>
这是我的error_messages文件。
<% if object.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(object.errors.count, "error") %>
prohibited this <%= object.class.to_s.underscore.humanize.downcase %> from being saved:
</h2>
<p>There were problems with the following fields:</p>
<ul>
<% object.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
现在这是我的users / new.html文件。
<h1>Sign up</h1>
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<%= render 'fields', :f => f %>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
答案 0 :(得分:0)
传递给:object =>
的对象成为局部变量,与partial具有相同的名称。因此,在这种情况下,您的部分称为error_messages
,第一行应为
<% if error_messages.errors.any %>
现在显然这看起来有点令人困惑 - 这可能是一个建议,部分的命名是错误的。
此外,部分视图文件的名称应以下划线开头 - shared/_error_messages
- 标记它们不是完整视图;它们应该用render :partial => 'shared/error_messages'
呈现;并且:object
局部变量不带下划线。
有关渲染部分的信息,请参阅some docs。