Несмотря на то, что я заполнил имя, адрес электронной почты, пароль, регистрация блоков проверки - PullRequest
0 голосов
/ 05 февраля 2019

Я нахожусь в центре Rails Tutorial.Я думал, что я почти закончил главу 7, но когда я попытался зарегистрировать из браузера то, что я сделал, проверка не проходит.Не могли бы вы сказать мне, почему и что происходит?

Я попытался посмотреть примеры кодов здесь.https://github.com/yasslab/sample_apps/tree/master/5_1_2/ch07, но я не смог найти решение этой ошибки.

Появляется на аватаре.

--- !ruby/object:ActionController::Parameters
parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  utf8: "✓"
  authenticity_token: uXdA0mb2W613nUOFg8K47fR9pvmwv69wxwByuzE+DF9SbMhQIPsuLEGsZyax9tmDJAyw4x9ektFwqcQ0dVqvgw==
  user: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
    name: Rails Tutorial
    email: example@railstutorial.org
    password: pokopoko
    password_confirmation: pokopoko
  commit: Create my account
  controller: users
  action: create
permitted: false

# users_controller.rb
class UsersController < ApplicationController      
  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end

  def create
   @user = User.new(params[:user_params])
    if @user.save
      flash[:success] = "Welcome to the Sample App!"
      redirect_to @user
    else
      render 'new'
    end
  end

  private

  def user_params
    params.require(:user).permit(:name, :email, :password, :password_confirmation)
  end
end

# user.rb
class User < ApplicationRecord
  validates :name,  presence: true, length: { maximum:  50 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, length: { maximum: 255 },
                    format: { with: VALID_EMAIL_REGEX },
                    uniqueness: { case_sensitive: false }
  has_secure_password
  validates :password, presence: true, length: { minimum: 6 }, allow_nil: true
end

это журнал ошибок.

Started POST "/signup" for 160.86.161.32 at 2019-02-05 02:14:40 +0000
Cannot render console from 160.86.161.32! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by UsersController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"uXdA0mb2W613nUOFg8K47fR9pvmwv69wxwByuzE+DF9SbMhQIPsuLEGsZyax9tmDJAyw4x9ektFwqcQ0dVqvgw==", "user"=>{"name"=>"Rails Tutorial", "email"=>"example@railstutorial.org", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Create my account"}
   (0.1ms)  begin transaction
  User Exists (0.1ms)  SELECT  1 AS one FROM "users" WHERE "users"."email" IS NULL LIMIT ?  [["LIMIT", 1]]
   (0.1ms)  rollback transaction
  Rendering users/new.html.erb within layouts/application
  Rendered shared/_error_messages.html.erb (1.1ms)
  Rendered users/new.html.erb within layouts/application (4.1ms)
  Rendered layouts/_shim.html.erb (0.3ms)
  Rendered layouts/_header.html.erb (0.5ms)
  Rendered layouts/_footer.html.erb (0.4ms)
Completed 200 OK in 44ms (Views: 39.2ms | ActiveRecord: 0.3ms)

если я изменил if @user.save на if @user.save!

другое сообщение об ошибке

Проверка не удалась: Имя не может быть пустым, электронная почта не может быть пустой, электронная почта недействительна, пароль не может быть пустым

1 Ответ

0 голосов
/ 05 февраля 2019

Посмотрите на действие создания.У вас есть @user = User.new(params[:user_params]).Но в параметрах нет ключа user_params.user_params - это имя метода, оно у вас в приватной части контроллера, и вы определяете сильные параметры в этом методе.Просто измените на

@user = User.new(user_params)
...