2017-02-06 2 views
0

Я новичок в RoR, и я пытаюсь создать регистрационную форму. Когда я нажимаю «Создать учетную запись», данные не сохраняются в базе данных. Я добавил ресурсы: пользователи в файл маршрутов. Есть что-то еще, что мне не хватает?Данные формы не сохраняются в базе данных

Это мое мнение (signup.html.erb)

регистрация

<%= form_for @user, :url => { :action => "create" } do |f| %> 
    <%= f.label :emp_id,"Employee ID" %><br> 
    <%= f.text_field :emp_id, class: 'form-control' %><br><br> 

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

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

    <%= f.submit "Create my account", class: "btn btn-primary" %> 
<% end %> 

Это мой контроллер

class UsersController < ApplicationController 
    def new 
    @user = User.new 
    end 

    def signup 
    @user = User.new 
    end 

    def show 
    @user = User.find(params[:id]) 
    end 

    def create 
    @user = User.new(user_params)  
    if @user.save 
     render 'login' 
    else 
     render 'signup' 
    end 
    end 

    def user_params 
    params.require(:user).permit(:emp_id, :password) 
    end 
end 
+0

Вы должны разрешить 'password_confirmation' тоже – Iceman

+0

ошибки отображения на странице просмотра, это даст вам представление о том, что отсутствует в форме. '@ user.errors' – TarunJadhwani

+0

Рельсы включают в себя изящный маленький драгоценный камень под названием' byebug' по умолчанию. Если вы добавите строку 'byebug' сразу после' @user = User.new (user_params), то рельсы войдут в отладчик. Поэтому перезагрузите страницу в своем браузере (она остановится), а затем переключитесь на оболочку, в которой вы используете сервер. Это даст вам интерактивную оболочку, в которой вы можете затем проверить, например, '@ user.valid?' И '@ user.errors', а также посмотреть параметры. – max

ответ

1

Вам необходимо разрешить :password_confirmation

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

И убедитесь, что нет никакой другой валидации как email наличия или что приведет к сбою валидация

+0

password_confirmation не является полем в таблице users, он просто имеет user_id, emp_id и пароль User_id - это Auto Increment. И да, нет никаких проверок –

+0

Я знаю' password_confirmation' - это не поле, но оно требуется как разработка проверяет пароль и пароль_подтверждение должно соответствовать –

+0

, вы можете сделать что-то одно, просто создайте новый 'u = User.new' и проверьте правильность с' u.valid? 'и' u.errors.messages' –

Смежные вопросы