首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails教程3,RSpec故障

Rails教程3,RSpec故障
EN

Stack Overflow用户
提问于 2011-06-11 09:15:45
回答 1查看 620关注 0票数 1

我正在浏览Ruby on Rails教程3,并且很有兴趣,但我只是遇到了一些没有得到解决的问题。当我运行我的规范时,有两个测试失败。

代码语言:javascript
复制
Failures:
  1) UsersController PUT 'update' failure should render the 'edit' page
  Failure/Error: put :update, :id => @user, :user => @attr
  undefined local variable or method `object' for #<#<Class:0x00000102c861c8>:0x00000101d25558>
 # ./app/views/shared/_error_messages.html.erb:3:in `_app_views_shared__error_messages_html_erb___3390867530789228804_2170854120__2806434579894406668'
 # ./app/views/users/edit.html.erb:4:in `block in _app_views_users_edit_html_erb__558009768664311469_2170714160__919273585470661416'
 # ./app/views/users/edit.html.erb:3:in `_app_views_users_edit_html_erb__558009768664311469_2170714160__919273585470661416'
 # ./app/controllers/users_controller.rb:47:in `update'
 # ./spec/controllers/users_controller_spec.rb:158:in `block (4 levels) in <top (required)>'

2) UsersController PUT 'update' failure should have the right title
 Failure/Error: put :update, :id => @user, :user => @attr
 undefined local variable or method `object' for #<#<Class:0x00000102c861c8>:0x00000101b211f8>
 # ./app/views/shared/_error_messages.html.erb:3:in `_app_views_shared__error_messages_html_erb___3390867530789228804_2170854120__2806434579894406668'
 # ./app/views/users/edit.html.erb:4:in `block in _app_views_users_edit_html_erb__558009768664311469_2170714160__919273585470661416'
 # ./app/views/users/edit.html.erb:3:in `_app_views_users_edit_html_erb__558009768664311469_2170714160__919273585470661416'
 # ./app/controllers/users_controller.rb:47:in `update'
 # ./spec/controllers/users_controller_spec.rb:163:in `block (4 levels) in <top (required)>'

我已经尽可能地搜索了我的代码,并将其与书中的代码进行了比较,但什么也没有找到。我敢肯定这是我错过的一个愚蠢的小东西,我会非常感谢第二双(或更多)眼睛。

以下是我的测试:

代码语言:javascript
复制
describe "failure" do
  before(:each) do
    @attr = { :email => "", :name => "", :password => "", :password_confirmation => "" }
  end

  it "should render the 'edit' page" do
    put :update, :id => @user, :user => @attr
    response.should render_template('edit')
  end

  it "should have the right title" do
    put :update, :id => @user, :user => @attr
    response.should have_selector("title", :content => "Edit User")
  end
end

下面是来自users_controller的更新方法:

代码语言:javascript
复制
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
  flash[:success] = "Profile updated"
  redirect_to @user
else
  @title = "Edit User"
  render 'edit'
end
end

任何关于我应该在哪里寻找的想法都非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-14 18:28:12

问题的根源不在等级库文件中,即使问题在这些等级库文件中表现出来。讲师Michael Hartl更改了以下声明:

代码语言:javascript
复制
<%= render 'shared/error_messages' %
                  to 
<%= render 'shared/error_messages', :object => f.object %>

语句。换句话说,他在第一个语句中添加了“,:object => f.object”。并且您必须查看包含原始语句的所有文件,并将它们更改为第二个语句。如果你错过了它们中的任何一个,你就会得到这些错误。具体查看以下文件(以及可能包含原始语句的任何其他文件):

代码语言:javascript
复制
app/views/users/edit.html.erb
app/views/users/fields.html.erb
app/views/users/new.html.erb
app/views/shared/micropost_form.html.erb
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6313469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档