在Micheal Hartl Ruby on Rails教程第10.1.1节中遇到错误

时间:2016-12-13 21:14:54

标签: ruby-on-rails

这里的一个菜鸟问题;不知道为什么我会收到这个错误,一直在关注红宝石教程中的一个' T'我想,这是我的错误:

失败[" test_invalid_signup_information",UsersSignupTest,1.276558378001937]     test_invalid_signup_information #UsersSignupTest(1.28s)         预计至少有1个元素匹配"表格[action =" / signup"]",找到0 ..         预期0为> = 1。         test / integration / users_signup_test.rb:7:在`block in'

以下是它所指的测试:

test "invalid signup information" do
    get signup_path
    assert_select 'form[action="/signup"]'

    assert_no_difference 'User.count' do
        post signup_path, params: { user: {name: "", email: "user@invalid", password: "foo", password_confirmation: "bar"}}
    end

这是路由问题吗?老实说,我回过头来重新整理前一章,仍然无法找到我的漏洞,任何想法,我错过了什么?

编辑:这是它所指的部分,_form.html.erb:

<%= form_for(@user) do |f| %>
 <%= render 'shared/error_messages', object: @user %>

 <%= f.label :name %>
 <%= f.text_field :name, class: 'form-control' %>

 <%= f.label :email %>
 <%= f.email_field :email, class: 'form-control' %>

 <%= f.label :password %>
 <%= f.password_field :password, class: 'form-control' %>

 <%= f.label :password_confirmation %>
 <%= f.password_field :password_confirmation, class: 'form-control' %>

 <%= f.submit yield(:button_text), class: "btn btn-primary" %>
<% end %>

1 个答案:

答案 0 :(得分:1)

我正在处理相同的教程并遇到了同样的问题。您遇到的问题是由于您完成了7.3.4中的上一个练习。本部分让您更新表单,以便将其发布到正确的URL。

您必须将部分_form.html.erb的第1行更新为以下内容:

<%= form_for(@user, url: signup_path) do |f| %>

这应该可以消除错误。

编辑:您必须使用上面的网址的收益率,因为表单的2次使用的路径不同。即:编辑:需要右括号

<%= form_for(@user, url: yield(:form_path)) do |f| %> 

这需要edit.html.erb中的新提供行:

<% provide(:form_path, user_path) %>

和new.html.erb文件:

<% provide(:form_path, signup_path) %>