undefined局部变量或error_messages.html的方法`object'

时间:2013-02-05 17:07:28

标签: ruby-on-rails

我正在关注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 %>

1 个答案:

答案 0 :(得分:0)

传递给:object =>的对象成为局部变量,与partial具有相同的名称。因此,在这种情况下,您的部分称为error_messages,第一行应为

<% if error_messages.errors.any %>

现在显然这看起来有点令人困惑 - 这可能是一个建议,部分的命名是错误的。

此外,部分视图文件的名称应以下划线开头 - shared/_error_messages - 标记它们不是完整视图;它们应该用render :partial => 'shared/error_messages'呈现;并且:object局部变量不带下划线。

有关渲染部分的信息,请参阅some docs