2014-01-13 6 views
0

방금 ​​User Scaffold를 생성했으며 모든 입력란에 '비밀번호를 입력 할 수 없습니다'라는 오류 메시지가 나타납니다. 레이크 테스트가 통과하기 때문에 혼란 스럽습니다. 오류가 어디에 있는지 확실하지 않으십니까?비밀 번호는 비워 둘 수 없습니다 - 사용자 비계

사용자 모델 :

class User < ActiveRecord::Base 
validates :name, presence: true, uniqueness: true 
has_secure_password 
end 

그리고 내 사용자 컨트롤러 : 제출 더 많은 코드가 필요한 경우

class UsersController < ApplicationController 
before_action :set_user, only: [:show, :edit, :update, :destroy] 

# GET /users 
# GET /users.json 
def index 
    @users = User.order(:name) 
end 

# GET /users/1 
# GET /users/1.json 
def show 
end 

# GET /users/new 
def new 
@user = User.new 
end 

# GET /users/1/edit 
def edit 
end 

# POST /users 
# POST /users.json 
def create 
@user = User.new(user_params) 

respond_to do |format| 
    if @user.save 
    format.html { redirect_to users_url, notice: "User #{@user.name} was successfully created." } 
    format.json { render action: 'show', status: :created, location: @user } 
    else 
    format.html { render action: 'new' } 
    format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
end 
end 

# PATCH/PUT /users/1 
# PATCH/PUT /users/1.json 
def update 
respond_to do |format| 
    if @user.update(user_params) 
    format.html { redirect_to users_url, notice: "User #{@user.name} was successfully updated." } 
    format.json { head :no_content } 
    else 
    format.html { render action: 'edit' } 
    format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
end 
end 

# DELETE /users/1 
# DELETE /users/1.json 
def destroy 
@user.destroy 
    respond_to do |format| 
    format.html { redirect_to users_url } 
    format.json { head :no_content } 
    end 
end 

private 
# Use callbacks to share common setup or constraints between actions. 
def set_user 
    @user = User.find(params[:id]) 
end 

# Never trust parameters from the scary internet, only allow the white list through. 
def user_params 
    params.require(:user).permit(:name, :password_digest) 
end 
end 

바로 알려주세요. 뭔가 당신이 오른쪽 parameters을 필요로하지 않는 양식에서이 있어야 하더군요, 4

답변

1

당신이 양식을 제출하면 server logs를 볼 것이 좋을 것이다 레일 함께 일하고 있어요 : passwordpassword_confirmation하지만 컨트롤러 당신은 어떤 이유로 password_digest이 필요합니다

def user_params 
    params.require(:user).permit(:name, :password_digest) 
end 

그것을해야한다 :

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

password_digest는 PARAMS 통해하지 업데이트해야합니다.

+0

그 덕분에 도움을 많이 주셔서 감사합니다. –

관련 문제