第9.1章中的Rspec错误 - 参数不能包含nil

时间:2014-08-04 04:40:27

标签: ruby-on-rails-4 railstutorial.org

嗨,伙计们,我正在尝试解决Hartl真正令人敬畏的ROR教程第9章Ex 1的问题。我已经筋疲力尽所有的谷歌搜索,并在这里找麻烦读者解决我的问题。我已经运行了Rspec测试并且它出现了错误

 User Pages edit page 
 Failure/Error: before { visit edit_user_path(user) }
 ActionView::Template::Error:
   First argument in form cannot contain nil or be empty
 # ./app/views/users/edit.html.erb:6:in `_app_views_users_edit_html_erb__1806936194471399240_70271188651260'
 # ./spec/requests/user_pages_spec.rb:61:in `block (3 levels) in <top (required)>'

我自然而然地回到了我的Sign Tutorial上,查找了edit.html.erb文件和user_pages_spec.rb文件,但所有文件似乎都是正确的。看看我的路由(以防万一出错)和users_controller,但他们也很好。这是代码

Edit.html.erb,第6行为&lt;%= form_for(@ user)do | f | %GT;

<div class="row">
 <div class="span6 offset3">
   <%= form_for(@user) do |f| %>
   <%= render 'shared/error_messages' %>

Users_controller.rb

def edit
   @user = User.find(params[:id])
end

def update
  @user = User.find(params[:id])
  if 
      @user.update_attributes(user_params)
  else
    render 'edit'
  end    
end

user_pages_spec.rb第61行是“在{visit edit_user_path(user)}之前”

describe "edit" do
    let(:user) { FactoryGirl.create(:user) }
    before { visit edit_user_path(user) }

    describe "page" do
      it { should have_content("Update your profile") }
      it { should have_title("Edit user") }
      it { should have_link('change', href: 'http://gravatar.com/emails') }
    end

    describe "with invalid information" do
      before { click_button "Save changes" }

      it { should have_content('error') }
    end
end

哪里会出错?

非常感谢你们!

1 个答案:

答案 0 :(得分:0)

发现这背后的问题因为我的

def edit
  @user = User.find(params[:id])
end
user_controller的

在私有方法中,这就是为什么它没有返回任何内容......

这么糟糕的错误我很尴尬......

希望这有助于为他人节省一些时间......