Mein Registrierungsformular, bei dem es sich um ein Formular für das Benutzermodell handelt, enthält einen Zeichenfolgenwert für das Unternehmen. Ich habe jedoch gerade eine Änderung vorgenommen, sodass Benutzer zu Unternehmen gehören. Daher muss ich ein Objekt der Firma an das Benutzermodell übergeben.
Ich möchte den Zeichenfolgenwert aus dem Formular verwenden, um ein Objekt der Firma zu erhalten:
@user.company = Company.find_by_name(params[:company])
Ich glaube, dass das oben genannte funktioniert, aber das Formular übergibt die Firma: (die Zeichenfolge ist) an das Modell, wenn ich aufrufe:
@user = User.new(params[:user])
Daher möchte ich wissen (und kann nicht finden, wie), den Parameter: company zu entfernen, bevor er an das Benutzermodell übergeben wird.
quelle
model_params.delete :key_name
funktioniert nicht - eine Idee warum?assin_params = params.dup.delete(:company)
. B. verwenden . Niemals direkt aus Params löschenassign_params = params.dup; assign_params.delete(:company)
model_params
eine Funktion war, die die relevanten Parameter abzogparams
. Wenn Sie alsodelete
von kommenmodel_params
, löschen Sie wirklich nur den zurückgegebenen Hashmodel_params
.Sie sollten wahrscheinlich hash.except verwenden
Es werden zwei Dinge erreicht: Sie können mehr als einen Schlüssel gleichzeitig ausschließen und den ursprünglichen Hash nicht ändern.
quelle
"-1"
als Schlüssel haben. {"utf8" => "✓", "_method" => "patch", "authenticity_token" => "VtY ...", "brochure" => {"title" => "Hallo Welt", "profilings_attributes" => {"-1" => {"member_profile_id" => "3"}, "0" => {"Prozentsatz" => "10.0", "description" => "Some description!", "_Destroy" = > "false", "id" => "10"}, "1" => {...}}, "sponsors_attributes" => {"-1" => {"sponsor_id" => "2"}, "0" => {"brochure_id" => "Der richtige Weg, dies zu erreichen, ist die Verwendung von
strong_params
Auf diese Weise haben Sie mehr Kontrolle darüber, welche Parameter an das Modell übergeben werden sollen
quelle
Dadurch werden Parameter aus der URL entfernt
quelle
Um löschen zu können, können Sie ein Memo erstellen :
Jetzt können Sie tun:
quelle