2016-06-02 10 views
0

Ich lerne Rails und wie es auf bestimmte Aspekte der Web-Programmierung funktioniert. Ich weiß, dass diese Frage oft gestellt wurde, wie zum Beispiel this one, aber wenn ich versuche, diese Antwort zu replizieren, bekomme ich den gleichen Fehler. Kannst du mir bitte helfen?Parameter fehlt oder der Wert ist leer: usuario

usuarios_controller.rb: (create)

def create 
    @usuario = Usuario.new(user_params) 

    if @usuario.save 
    redirect_to root_path, notice: "The person has been created!" and return 
    end 
    render 'new' 
end 

user_params:

private 
    def user_params 
    params.require(:usuario).permit(:user, :pass) 
    end 

HTML-Code, den ich erstellen bin mit:

<h1>New Person</h1> 

<body> 
    <%= form_tag "/usuarios/create", :method => "post" do %> 
    <p> 
    <%= label_tag :user, "Usuario: " %> <br> 
    <%= text_field_tag :user %> 
    </p> 
    <p> 
    <%= label_tag :pass, "Password: " %> <br> 
    <%= password_field_tag :pass %> 
    </p> 
    <%= submit_tag "Search" %> 
    <% end %> 

    <% if ENV["RAILS_ENV"] == "development" %> 
    <%= debug(params) %> 
    <% end %> 
</body> 
+0

Wie sieht die Anfrage im Serverprotokoll aus (die Ausgabe, die Sie nach dem Ausführen von 'rails server' erhalten)? Sie sollten etwas wie "Gestartet POST"/usuarios ... '. – mlovic

+0

Gestartet POST"/usuarios/create "für :: 1 am 2016-06-02 10:23:13 -0700 Verarbeitung von UsuariosController # create as HTML Parameter: {"utf8" => "✓", "authenticity_token" => "kBMgnKUkwHhW/YJ2lnPZ33ZQMRR8wBYqjkjpF/svdFIl2BxlkwKyL5aG4kA1Z7JdeAraOQ3rII4gU5f9/tFxA ==", "user" => "abc", "übergeben" => "123", "commit "=>" Suche "} Abgeschlossen 400 Ungültige Anforderung in 3 ms (ActiveRecord: 0.0ms) ActionController :: ParameterMissing (Parameter fehlt oder der Wert ist leer: usuario): app/controllers/usuarios_controller.rb: 57: in 'usuario_params ' app/controllers/usuarios_controller.rb: 11: in' create' –

Antwort

1

Bitte aktualisieren Sie Ihre Formular Ansicht neu. html.erb

<h1>New Person</h1> 

<body> 
    <%= form_for @usuario do |f|%> 
    <p> 
    <%= f.label :user, "Usuario: " %> <br> 
    <%= f.text_field :user %> 
    </p> 
    <p> 
    <%= f.label :pass, "Password: " %> <br> 
    <%= f.password_field :pass %> 
    </p> 
    <%= submit_tag "Search" %> 
    <% end %> 

    <% if ENV["RAILS_ENV"] == "development" %> 
    <%= debug(params) %> 
    <% end %> 
</body> 

und bitte

def new 
    @usuario = Usuario.new() 
end 
+0

Ich habe das zur Arbeit, anscheinend war es Benutzername und Passwort und nicht Benutzer und pass. –

1

Diese Form erzeugt Parameter in Form von {"user"=>"abc", "pass"=>"123"} in Ihrem Controller hinzuzufügen, während die user_params Methode {"usuario"=> {"user"=>"abc", "pass"=>"123"}} erwartet wird. Sie können entweder das Formular ändern oder die Methode user_params ändern.

+0

Ich habe das Formular geändert und jetzt funktioniert es. Jetzt kommt das Problem mit der Anmeldung mit diesem Benutzernamen und Passwort –