2017-10-14 4 views
0

Ich versuche, Kapitel 11 in Ruby on Rails Tutorial Buch zu tun, und wenn ich versuche, den Integrationstest in Listing 11.33 zu tun, bekomme ich zwei Fehler beide sagen, dass " param fehlt oder der Wert ist leer: user ". Es listet dann zwei Zeilen in der Benutzer-Controller-Definition auf, die erste bezieht sich auf die user_params und die zweite bezieht sich auf die create-Aktion im Controller. Ich schaute mir einige andere Fragen an und basierend auf den Antworten versuchte ich, den require (: user) -Teil der user_params-Definition zu entfernen, was dazu führte, dass die Integrationstests von zwei Fehlern zu Fehlern übergingen. Aber ich möchte das require (: user) nicht aus der user_params-Definition entfernen. Weiß jemand, warum ich diesen Fehler bekomme? Hier ist der Abschnitt des Tests, wo der Fehler erstellt wird:Ruby on Rails Tutorial - Kapitel 11 - Fehler beim Integrationstest Beispiel

test "valid signup information with account activation" do 
get signup_path 

assert_difference 'User.count', 1 do 
    post users_path, params: { user: { name: "Example User", 
     email: "[email protected]", 
     password: "password", 
     password_confirmation: "password" } } 
end 

und hier ist die Definition für user_params, die mit Ausnahme dieser Test funktioniert

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

Antwort

0

ich das Problem gefunden. Ich vergleichen die Ausgabe des Tutorials Buchs i online mit der Online-Ausgabe kostenlos erhältlich über Safari Online-Bücher lesen und festgestellt, dass sie stattdessen in dieser Ausgabe verwenden:

post users_path, user: { name: "Example User", 

wo die params: {} wurde entfernt von um den Benutzer: {} diese Änderung machte die Fehler weg.

Verwandte Themen