2017-06-01 2 views
1

Ich habe ein Problem mit meiner Verwendung von starken Params in Rails Controller. Hier ist mein Code:Starke Parameter in Rails ignorieren einen Parameter, nachdem der Inhalt geändert wurde

def request_params 
    params[:req][:emails] = params[:req][:emails].delete(' ').split(/\r\n|\n|,/).reject(&:blank?).dup 
    params.require(:req).permit(:emails, :body, :link, :other, :attributes)   
end 

@request = Request.new(request_params) 

Wenn das Request-Objekt mit request_params erstellt wird, emails Parameter ist aus irgendeinem Grund ignoriert.

Gibt es einen Grund, diesen Parameter nicht zuzulassen, nachdem der Parameter analysiert wurde?

Ich hatte das E-Mail-Attribut explizit zuweisen, um das Problem zu lösen:

@request.emails = params[:req][:emails] 

aber ich möchte wissen, ob es eine klarere Lösung ist.

Vielen Dank im Voraus.

+0

https://stackoverflow.com/questions/19399046/how-to-make-changes-to-strong-parameters- Kleinschreibung ändern – Pavan

Antwort

1

Warum versuchen Sie die Parameter zu manipulieren, bevor Sie sie zulassen? Sie sollten es vor/nach dem Speichern im Modell ändern.

Falls Sie es noch tun wollen, versuchen, etwas wie folgt aus:

def request_params 
    temp = params.require(:req).permit(:emails, :body, :link, :other, :attributes) 
    temp[:req][:emails] = temp[:req][:emails].delete(' ').split(/\r\n|\n|,/).reject(&:blank?).dup 
    temp.permit! 
end 
Verwandte Themen