2016-05-21 7 views
0

Ich habe einige Probleme während der Arbeit mit Schienen, jede Hilfe wäre willkommen. Ich habe eine AktionValidierungsfehler in Schienen

def submit_solution 
    @event = Event.find(params[:id]) 
    @gallary = @event.gallaries.new 
end 

und von dieser geht es zur Ansicht

<%= form_for @gallary do |f| %> 
    <%= render 'shared/error_messages', object: @gallary %> 

    <div class="field"> 
     <%= f.label :image %><br> 
     <%= f.file_field :image %> 
    </div> 
    <div> 
     <%= hidden_field_tag(:event_id, @event.id) %> 
     <%= f.submit 'Upload', class: "btn btn-primary", controller: 'events', action: 'image_upload'%> 
    </div> 
<% end %> 

jetzt, wenn ich die Datei lade dann reibungslos läuft es aber, wenn ich es einreichen, ohne die Datei zu. Es zeigt die Validierungsfehler nicht an. es gibt den Fehler

param is missing or the value is empty: gallary 

mein gallary params

def gallary_params 
    params.require(:gallary).permit(:image, :event_id) 
end 

meine image_upload Aktion

def image_upload 
    @event = Event.find(params[:event_id]) 
    @gallary = @event.gallaries.build(gallary_params) 
    if @gallary.save 
     flash[:success] = "Image uploaded" 
     redirect_to controller: 'events', action: 'event_info', id: @event.id 
    else 
     flash[:danger] = "error while uploading image" 
     redirect_to controller: 'events', action: 'submit_solution', id: @event.id 
    end 
end 

jemand kann mir sagen, warum dies geschieht ??

+0

Post image_upload Aktion – bkunzi01

+0

Überprüfen Sie Ihre params, die eingereicht werden. ': gallary' wird nicht gesendet. – jdgray

+0

@jdgray Ja, das sind sie nicht, aber in dem Fall, dass ich die Datei hochlade, wird sie übermittelt. Ich möchte nur wissen, warum dieses Verhalten. Es sollte atleast die: Gallary be it nil – whishky

Antwort

0

Versuchen Sie folgendes:

<%= form_for @gallary do |f| %> 
    <%= render 'shared/error_messages', object: @gallary %> 

    <div class="field"> 
    <%= f.label :image %><br> 
    <%= f.file_field :image %> 
    </div> 
<div> 
    <%= f.hidden_field :event_id, :value => @event.id %> 
    <%= f.submit 'Upload', class: "btn btn-primary", controller: 'events', action: 'image_upload'%> 
    </div> 
<% end %> 

dann:

def image_upload 
    @event = Event.find(params[:gallary][:event_id]) 
    @gallary = @event.gallaries.build(gallary_params) 
    if @gallary.save 
    flash[:success] = "Image uploaded" 
    redirect_to controller: 'events', action: 'event_info', id: @event.id 
    else 
    flash[:danger] = "error while uploading image" 
    redirect_to controller: 'events', action: 'submit_solution', id: @event.id 
    end 
end