2017-02-06 4 views
0

Ich bin neu bei RoR und versuche ein Anmeldeformular zu erstellen. Wenn ich auf "Mein Konto erstellen" klicke, werden die Daten nicht in der Datenbank gespeichert. Ich habe Ressourcen hinzugefügt: Benutzer zu meiner Routes-Datei. Gibt es noch etwas, das mir fehlt?Formulardaten werden nicht in der Datenbank gespeichert

Dies ist meiner Ansicht nach (signup.html.erb)

Anmelden

<%= 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 %> 

Das ist mein Controller

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

Sie werden auch – Iceman

+0

Darstellungsfehler in der Ansichtsseite zu ermöglichen, haben 'password_confirmation', dies wird Ihnen eine Vorstellung davon, Was fehlt in der Form. '@ user.errors' – TarunJadhwani

+0

Rails enthält standardmäßig ein kleines Juwel namens' byebug'. Wenn Sie die Zeile 'byebug' direkt nach' @user = User.new (user_params) 'hinzufügen, werden Rails in einen Debugger gehen. Laden Sie die Seite in Ihrem Browser neu (es bleibt stehen) und wechseln Sie dann zu der Shell, in der Sie den Server betreiben. Dadurch erhalten Sie eine interaktive Shell, in der Sie beispielsweise '@ user.valid?' Und '@ user.errors' überprüfen und sich die Parameter anschauen können. – max

Antwort

1

Sie benötigen :password_confirmation

zu ermöglichen, ist
def user_params 
    params.require(:user).permit(:emp_id, :password, :password_confirmation) 
end 

Und stellen Sie sicher, dass es keine anderen Validierungen wie email Anwesenheit oder dass Validierungen fehlschlagen

+0

password_confirmation ist kein Feld in der Benutzertabelle. Es hat nur user_id, emp_id und password. User_id ist Auto Increment. Und ja, es gibt keine Validierungen –

+0

Ich weiß' password_confirmation' ist kein Feld, aber es ist als Entwurf erforderlich checks password und password_confirmation sollten übereinstimmen –

+0

können Sie eine Sache machen, erstellen Sie einfach ein neues 'u = User.new' und überprüfen Sie die Validierungen mit' u.valid? 'und' u.errors.messages' –

Verwandte Themen