2016-05-21 15 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ええ、彼らはそうではありませんが、私はファイルをアップロードした場合、それが提出されています。私はちょうどなぜこの動作を知りたい。それは少なくともat:gallaryであるべきですか? – 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