嗨,伙计们,我正在尝试解决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
哪里会出错?
非常感谢你们!
答案 0 :(得分:0)
发现这背后的问题因为我的
def edit
@user = User.find(params[:id])
end
user_controller的在私有方法中,这就是为什么它没有返回任何内容......
这么糟糕的错误我很尴尬......
希望这有助于为他人节省一些时间......