2016-05-21 5 views
0

У меня есть некоторые проблемы при работе с рельсами, любая помощь будет оценена по достоинству. У меня есть действие,ошибки проверки в рельсах

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

и от этого он идет к просмотру

<%= 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 %> 

теперь, если я загрузить файл, то он плавно работает, но когда я представить его без загрузки файла. не отображая ошибки проверки. это дает ошибку

param is missing or the value is empty: gallary 

моего Gallary Params

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

мое image_upload действие

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 

кто-нибудь может сказать мне, почему это происходит ??

+0

Опубликуйте image_upload действия – bkunzi01

+0

Проверьте ваш Params, которые в настоящее время представлены. ': gallary' не отправляется. – jdgray

+0

@jdgray да, они не есть, но в случае, когда я загружаю файл, его отправляют. я просто хочу знать, почему это поведение. он должен по крайней мере представить: gallary be nil – whishky

ответ

0

Попробуйте это:

<%= 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 %> 

затем:

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 
Смежные вопросы