2017-01-31 2 views
0

Das Problem ist mit "starken Parametern" in Schienen. Ich benutze Libelle zum Hochladen von Bildern.param fehlt oder der Wert ist leer: gallery

Das Problem ist, dass, wenn ich ein leeres Formular sende ich keine Parameter für die Fehlerbehandlung erhalten. Was kann der Grund sein?

Controller:

Es gibt noch auch eine Methode „Create“ ist, die das Bild in der Datenbank speichert und sendet den Benutzer auf eine Seite mit Bildern.

def index 
    @gallery = Gallery.new 
    @galleries = Gallery.all 
end 

def create 
    @gallery = Gallery.new(gallery_params) 

    if @gallery.save 
    redirect_to galleries_path, flash: { success: 'Your Image was successfully save.' } 
    else 
    redirect_to :back,   flash: { alert: "Your Image don't save." } 
    end 
end 

def gallery_params 
    params.require(:gallery).permit(:image) 
end 

Aufrufe:

= form_for @gallery do |f| 
    = f.file_field :image 
    = f.submit 'Submit', class: 'btn bth-primary btn-lg' 

Parameter:

{"utf8"=>"✓", "authenticity_token"=>"8eotQtkj8SElqJLdHuOX8r+dWrCJRWTmVcyfd1mSLD/8MjWw/ElH/HCxZFSJ6oOWaxpbLbn4kAg5nlFycsgjHg==", "commit"=>"Submit"} 
+0

Was meinen Sie mit "Ich bekomme keine Parameter für die Fehlerbehandlung"? –

+1

was Sie bekommen, ist völlig in Ordnung und wie erwartet. –

+0

Wenn Sie meinen, dass Sie keinen Validierungsfehler erhalten, ist dies möglicherweise aufgrund des Felds 'image' nicht obligatorisch. Sie sollten Ihr 'Gallery' Modell –

Antwort

1

Dies ist das erwartete Verhalten finden Sie in der Dokumentation zu ActionController::Parameters#require

Was ich in diesen Fällen in der Regel tun, ist der Fang Ausnahme und zeigt eine Flash-Nachricht an, um den Benutzer zu benachrichtigen. Sie könnten dem Modell auch manuell einen Fehler hinzufügen.

def create 
    @gallery = Gallery.new(gallery_params) 

    if @gallery.save 
    redirect_to galleries_path, flash: { success: 'Your Image was successfully save.' } 
    else 
    redirect_to :back, flash: { alert: "Your Image don't save." } 
    end 
rescue ActionController::ParameterMissing => e 
    redirect_to :back, flash: { alert: "Please attach an image." } 
end 
Verwandte Themen