Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails Michael Hartl错误:用户页面使用有效信息的注册页面应创建一个用户_Ruby On Rails_Ruby On Rails 4_Railstutorial.org - Fatal编程技术网

Ruby on rails RubyonRails Michael Hartl错误:用户页面使用有效信息的注册页面应创建一个用户

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)

我正在学习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)
     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