Rspec render partial正在为hartl教程第10章中的对象生成未定义的变量

Rspec render partial正在为hartl教程第10章中的对象生成未定义的变量,rspec,ruby-on-rails-4,capybara,railstutorial.org,Rspec,Ruby On Rails 4,Capybara,Railstutorial.org,也许我盯着代码看了太久,需要一双新的眼睛,但这让我感到困惑。我有一个失败的测试告诉我: undefined local variable or method `object' 1) User pages edit with invalid information Failure/Error: visit edit_user_path(user) ActionView::Template::Error: undefined local variable or

也许我盯着代码看了太久,需要一双新的眼睛,但这让我感到困惑。我有一个失败的测试告诉我:

undefined local variable or method `object'


1) User pages edit with invalid information 
     Failure/Error: visit edit_user_path(user)
     ActionView::Template::Error:
       undefined local variable or method `object' for #<#<Class:0x007fdfb561ae80>:0x007fdfb58ab500>
     # ./app/views/shared/_error_messages.html.erb:1:in `_app_views_shared__error_messages_html_erb__4119139248776046323_70299400131820'
     # ./app/views/users/edit.html.erb:7:in `block in _app_views_users_edit_html_erb___2909598206032311320_70299400097640'
     # ./app/views/users/edit.html.erb:6:in `_app_views_users_edit_html_erb___2909598206032311320_70299400097640'
     # ./spec/requests/user_pages_spec.rb:116:in `block (3 levels) in <top (required)>'
以下是我的索引视图:

<% provide(:title, 'All users') %>
<h1>All users</h1>

<%= will_paginate %>

<ul class="users">
  <%= render @users %>
</ul>

<%= will_paginate %>

所有用户
这是我的编辑视图:

<% provide(:title, "Edit user") %>
<h1>Update your profile</h1>

<div class="row">
  <div class="span6 offset3">
    <%= form_for(@user) do |f| %>
      <%= render 'users/fields', f: f %>
      <%= f.submit "Save changes", class: "btn btn-large btn-primary" %>
    <% end %>

    <%= gravatar_for @user %>
    <a href="http://gravatar.com/emails">change</a>
  </div>
</div>

更新您的个人资料
以下是我的新观点:

<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>

<div class="row">
  <div class="span6 offset3">
    <%= form_for(@user) do |f| %>
      <%= render 'users/fields', f: f %>
      <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
    <% end %>
  </div>
</div>

注册
这是我的部分领域:

<%= render 'shared/error_messages', object: @user %>

<%= f.label :name %>
<%= f.text_field :name %>

<%= f.label :email %>
<%= f.text_field :email %>

<%= f.label :password %>
<%= f.password_field :password %>

<%= f.label :password_confirmation, "Confirm Password" %>
<%= f.password_field :password_confirmation %>
<% if object.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-error">
      The form contains <%= pluralize(object.errors.count, "error") %>.
    </div>
    <ul>
    <% object.errors.full_messages.each do |msg| %>
      <li>* <%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

以下是我的错误消息:

<%= render 'shared/error_messages', object: @user %>

<%= f.label :name %>
<%= f.text_field :name %>

<%= f.label :email %>
<%= f.text_field :email %>

<%= f.label :password %>
<%= f.password_field :password %>

<%= f.label :password_confirmation, "Confirm Password" %>
<%= f.password_field :password_confirmation %>
<% if object.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-error">
      The form contains <%= pluralize(object.errors.count, "error") %>.
    </div>
    <ul>
    <% object.errors.full_messages.each do |msg| %>
      <li>* <%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

表单包含。
  • *

**更新:我解决了这个问题并发布了我的字段,以便有相同问题的人可以观察并解决它。长时间盯着某样东西看有很多可以说的。如果你感到沮丧,出去走走或做些什么,你可能会注意到,很明显,在休息后重新审视一下,就可以纠正这个错误,就像我的情况一样。检查重复并在为渲染调用f:f时,为您的部分字段调用object:@user。这将使问题得到澄清:)

**更新:我解决了这个问题并发布了我的字段,以便有相同问题的人可以观察并解决它。长时间盯着某样东西看有很多可以说的。如果你感到沮丧,出去走走或做些什么,你可能会注意到,很明显,在休息后重新审视一下,就可以纠正这个错误,就像我的情况一样。检查重复并在为渲染调用f:f时,为您的部分字段调用object:@user。这将清除它:)

将字段部分布局文件的第一行(_fields.html.erb)更改为:
解决了我的类似问题。

将字段部分布局文件的第一行(_fields.html.erb)更改为:
解决了我的类似问题。

您也可以发布视图吗?我不确定它是基于上面的哪个视图,但它听起来像是
索引
视图。关于
找不到字段“Name”
-我建议在调用
填充“Name”之前安装gem
launchy
并调用方法
保存和打开页面
-这将创建一个屏幕截图,您可以看到与水豚看到的相同的图片。关于
未找到参数:用户
-我建议打开
测试.日志
,查看控制器中的参数(或者您可以使用控制器中的
绑定.撬动
来检查
参数
)。PS我没有看到明显的错误。我添加了索引、新建和编辑视图。我将添加launchy gem并试一试。感谢你的提示,@CDub似乎是对的——这是视图中的问题。如果你想创建(注册)用户,你应该给他一个机会来填写字段:姓名、电子邮件、密码。您应该添加视图
f.text\u字段:name
f.password\u字段:password
等。您也可以发布视图吗?我不确定它是基于上面的哪个视图,但它听起来像是
索引
视图。关于
找不到字段“Name”
-我建议在调用
填充“Name”之前安装gem
launchy
并调用方法
保存和打开页面
-这将创建一个屏幕截图,您可以看到与水豚看到的相同的图片。关于
未找到参数:用户
-我建议打开
测试.日志
,查看控制器中的参数(或者您可以使用控制器中的
绑定.撬动
来检查
参数
)。PS我没有看到明显的错误。我添加了索引、新建和编辑视图。我将添加launchy gem并试一试。感谢你的提示,@CDub似乎是对的——这是视图中的问题。如果你想创建(注册)用户,你应该给他一个机会来填写字段:姓名、电子邮件、密码。您应该添加视图
f.text\u字段:name
f.password\u字段:password
等。