Ruby on rails RubyonRails Michael Hartl错误:用户页面使用有效信息的注册页面应创建一个用户
我正在学习Michael Hartl关于Ruby on Rails第7章的课程。我已经读完了第七章,并一步一步地跟着读。然而,我也有一些错误,但我不确定我错过了什么Ruby on rails RubyonRails Michael Hartl错误:用户页面使用有效信息的注册页面应创建一个用户,ruby-on-rails,ruby-on-rails-4,railstutorial.org,Ruby On Rails,Ruby On Rails 4,Railstutorial.org,我正在学习Michael Hartl关于Ruby on Rails第7章的课程。我已经读完了第七章,并一步一步地跟着读。然而,我也有一些错误,但我不确定我错过了什么 Failures: 1) User pages signup page with valid information should create a user Failure/Error: expect { click_button submit }.to change(User, :count).by(1)
Failures:
1) User pages signup page with valid information should create a user
Failure/Error: expect { click_button submit }.to change(User, :count).by(1)
ArgumentError:
wrong number of arguments (0 for 1)
# ./app/controllers/users_controller.rb:24:in `user_params'
# ./app/controllers/users_controller.rb:12:in `create'
# ./spec/requests/user_pages_spec.rb:36:in `block (5 levels) in <top (required)>'
# ./spec/requests/user_pages_spec.rb:36:in `block (4 levels) in <top (required)>'
2) User pages signup page with invalid information should not create a user
Failure/Error: expect { click_button submit }.not_to change(User, :count)
ArgumentError:
wrong number of arguments (0 for 1)
# ./app/controllers/users_controller.rb:24:in `user_params'
# ./app/controllers/users_controller.rb:12:in `create'
# ./spec/requests/user_pages_spec.rb:23:in `block (5 levels) in <top (required)>'
# ./spec/requests/user_pages_spec.rb:23:in `block (4 levels) in <top (required)>'
用户\u controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
flash[:sucess] = "You've successfully created your account!"
redirect_to @user
else
render 'new'
end
end
private
def user_params
params.require.(:user).permit(:name, :email, :password, :password_confirmation)
end
end
前面有一个额外的点:user.permit,它不应该出现在users\u controller.rb文件底部的user\u参数中 试试这个
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
非常感谢你抓住了这个机会。另外,您可能不知道为什么我不能使用注册页面创建任何帐户?当我创建一个新帐户时,什么也没有发生。我注意到你的flash消息只有一个c成功,只有一个提示。当您尝试创建用户时会发生什么?你有错误吗?什么都没发生?谢谢你。我编辑了文件,但没有解决我遇到的问题。当我尝试使用正确的信息创建帐户时,不仅没有创建帐户,而且我也看不到任何消息。当我单击submit时,它会返回到usernew页面。我不确定哪里出了问题以及如何修复它,但现在我可以创建一个用户帐户了。谢谢你的帮助!
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>
<form>
<div class="row">
<div class="large-6 columns">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages' %>
<%= 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, "Confirmation" %>
<%= f.password_field :password_confirmation %>
<%= f.submit "Create my account", class: "button [radius round]" %>
<% end %>
</div>
</div>
</form>
--- !ruby/hash:ActionController::Parameters
utf8: ✓
authenticity_token: 87UYaLE5HupPdMf/Q0SCmNnvOGd6SXdRvNTtOOAruJI=
user: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
name: ''
email: ''
password: ''
password_confirmation: ''
commit: Create my account
controller: users
action: new
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end