2015-03-18 1 views
0

ранее я был в состоянии загрузить whwn я загрузил один файл, но когда я изменил его к нескольким загрузке файлов я был unabel для загрузки, пожалуйста, помогите мнеЯ не могу загрузить файлы, которые я был загружен с помощью carrierwave

здесь мой контроллер

invoice_details_controller.rb

class InvoiceDetailsController < ApplicationController 
     before_action :set_invoice_detail, only: [:show, :edit, :update, :destroy] 

     respond_to :html 

     def index 
     @invoice_details = InvoiceDetail.all 
     respond_with(@invoice_details) 
     end 

     def show 
    @invoice_detail = InvoiceDetail.find(params[:id]) 

     respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @invoice_detail } 
     format.pdf { render :layout => false } 
     end 
     end 

     def new 
     @invoice_detail = InvoiceDetail.new 
     respond_with(@invoice_detail) 
     end 

     def edit 
     end 

     def create 
     @invoice_detail = InvoiceDetail.new(invoice_detail_params) 
     respond_to do |format| 
      if @invoice_detail.save 
      format.html { redirect_to invoice_details_path, notice: 'Invoice was successfully created.' } 
      else 
      format.html { render action: "new" } 
      end 
     end 
     end 

     def update 
     @invoice_detail.update(invoice_detail_params) 
     redirect_to invoice_details_path 
     end 

     def destroy 
     @invoice_detail.destroy 
     redirect_to invoice_details_path 
     end 

     def download 
      respond_to do |format| 
      format.html { 
       if params[:invoice_id].nil? 
        redirect_to :back 
       else 
        begin 
        invoice = InvoiceDetail.find(params[:invoice_id]) 
        attachment_file = File.join('public', invoice.attachment.url) 
        if File.exists?(attachment_file) 
         send_file attachment_file, :disposition => 'attachment' 
        else 
         redirect_to :back 
        end 
        rescue Exception => error 
        redirect_to :back 
        end 
       end 
      } 
      end 
     end 

     private 
     def set_invoice_detail 
      @invoice_detail = InvoiceDetail.find(params[:id]) 
     end 

     def invoice_detail_params 
      params.require(:invoice_detail).permit(:attachment,:invoice_number, :supplier_name, :invoice_date, :invoice_due_date, :description_of_goods, :quatity, :price_per_unit, :total_amount, :mode_of_payment, :status, :shipping_country) 
     end 
    end 
here are my models 

invoice_details.rb 

    class InvoiceDetail < ActiveRecord::Base 
     has_many :attachment 
     accepts_nested_attributes_for :attachment 
    end 

invoice_files.rb 

    class InvoiceFile < ActiveRecord::Base 
     mount_uploader :avatar, AvatarUploader 
     belongs_to :InvoiceDetail 
     validates :name, presence: true # Make sure the owner's name is present. 
    end 


here is my form 

_form.html.erb 

    <%= form_for(@invoice_detail , html: {class: 'form-horizontal', role: 'form' }) do |f| %> 
     <% if @invoice_detail.errors.any? %> 
     <div id="error_explanation"> 
      <h2><%= pluralize(@invoice_detail.errors.count, "error") %> prohibited this invoice_detail from being saved:</h2> 

      <ul> 
      <% @invoice_detail.errors.full_messages.each do |message| %> 
      <li><%= message %></li> 
      <% end %> 
      </ul> 
     </div> 
     <% end %> 

     <div class="field"> 
      <%= f.label :invoice_number, :class => 'control-label' %> 
       <div class="controls"> 
     <%= f.text_field :invoice_number, :class => 'text_field', :required => true, :maxlength => 15, :placeholder =>'15 Alpha Numeric with special Characters', :presence => "check invoice num" %> 
     </div> 
     </div> 
     <div class="field"> 
     <%= f.label :supplier_name, :class => 'control-label' %> 
        <div class="controls"> 

     <%= f.text_field :supplier_name, :class => 'text_field', :required => true,:maxlength => 20, :placeholder => '20 Alpha numeric characters' %> 
     </div> 
     </div> 
     <div class="field"> 
     <%= f.label :invoice_date, :class => 'control-label' %> 
        <div class="controls1"> 

     <%= f.date_select :invoice_date, :class => 'text_area' %> 
     </div> 
     </div> 
     <div class="field"> 
     <%= f.label :invoice_due_date, :class => 'control-label' %> 
        <div class="controls1"> 

     <%= f.date_select :invoice_due_date, :class => 'text_area' %> 
     </div> 

     </div> 
     <div class="field"> 
     <%= f.label :description_of_goods, :class => 'control-label' %> 
         <div class="controls"> 

     <%= f.text_area :description_of_goods, :class => 'text_area', :maxlength => 50, :placeholder => 'Accepts up to 50 Alpha Numeric with special Characters'%> 
     </div> 
     </div> 
     <div class="field"> 
     <%= f.label :quality, :class => 'control-label' %> 
         <div class="controls"> 

     <%= f.text_field :quatity , :class => 'text_area',:maxlength => 10, :placeholder =>'Accepts up to 10 Digits'%> 
     </div> 
     </div> 
     <div class="field"> 
     <%= f.label :price_per_unit, :class => 'control-label' %> 
         <div class="controls"> 

     <%= f.text_field :price_per_unit, :class => 'text_area',:maxlength => 15, :placeholder =>'Accepts up to 15 Digits' %> 
     </div> 
     </div> 
     <div class="field"> 
     <%= f.label :total_amount, :class => 'control-label' %> 
         <div class="controls"> 

     <%= f.text_field :total_amount, :class => 'text_area', :maxlength => 15, :placeholder =>'Accepts up to 15 Digits' %> 
     </div> 
     </div> 
     <div class="field"> 
     <%= f.label :mode_of_payment, :class => 'control-label' %> 
         <div class="controls"> 

     <%= f.select :mode_of_payment, options_for_select(%w[Cash Cheque Transfer LC]), :class => 'text_area', :placeholder => 'Select mode of payment' %> 
     </div> 
     </div> 
     <div class="field"> 
     <%= f.label :status, :class => 'control-label' %> 
          <div class="controls"> 

     <%= f.select :status, options_for_select(%w[Paid Pending]), :class => 'text_area' %> 
     </div> 
     </div> 
     <div class="field"> 
     <%= f.label :shipping_country, :class => 'control-label' %> 
          <div class="controls"> 

     <%= f.country_select :shipping_country, {priority: %w(ID US CA), prompt: 'Please select a country'}, :class => 'text_area' %> 
     </div> 
     </div> 
     <div class="control-group"> 
      <%= f.label :attachment , :class => 'control-label' %> 
      <div class="controls"> 
      <%= f.file_field :avatar, :multiple => true, name: "attachment[avatar][]", :class => 'file_field', :required => true %> 
      </div> 
     </div> 
     <div class="form-actions1"> 
     <%= f.submit :class => 'btn btn-primary' %> 
     <%#= f.submit "cancel", :class => 'btn btn-danger', method: :delete, data: { confirm: 'Are you sure you want to cancel' } %> 

<%= form_for(@invoice_detail , html: {class: 'form-horizontal', role: 'form' }) do |f| %> 
    <% if @invoice_detail.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@invoice_detail.errors.count, "error") %> prohibited this invoice_detail from being saved:</h2> 

     <ul> 
     <% @invoice_detail.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
     <%= f.label :invoice_number, :class => 'control-label' %> 
      <div class="controls"> 
    <%= f.text_field :invoice_number, :class => 'text_field', :required => true, :maxlength => 15, :placeholder =>'15 Alpha Numeric with special Characters', :presence => "check invoice num" %> 
    </div> 
    </div> 
    <div class="field"> 
    <%= f.label :supplier_name, :class => 'control-label' %> 
       <div class="controls"> 

    <%= f.text_field :supplier_name, :class => 'text_field', :required => true,:maxlength => 20, :placeholder => '20 Alpha numeric characters' %> 
    </div> 
    </div> 
    <div class="field"> 
    <%= f.label :invoice_date, :class => 'control-label' %> 
       <div class="controls1"> 

    <%= f.date_select :invoice_date, :class => 'text_area' %> 
    </div> 
    </div> 
    <div class="field"> 
    <%= f.label :invoice_due_date, :class => 'control-label' %> 
       <div class="controls1"> 

    <%= f.date_select :invoice_due_date, :class => 'text_area' %> 
    </div> 

    </div> 
    <div class="field"> 
    <%= f.label :description_of_goods, :class => 'control-label' %> 
        <div class="controls"> 

    <%= f.text_area :description_of_goods, :class => 'text_area', :maxlength => 50, :placeholder => 'Accepts up to 50 Alpha Numeric with special Characters'%> 
    </div> 
    </div> 
    <div class="field"> 
    <%= f.label :quality, :class => 'control-label' %> 
        <div class="controls"> 

    <%= f.text_field :quatity , :class => 'text_area',:maxlength => 10, :placeholder =>'Accepts up to 10 Digits'%> 
    </div> 
    </div> 
    <div class="field"> 
    <%= f.label :price_per_unit, :class => 'control-label' %> 
        <div class="controls"> 

    <%= f.text_field :price_per_unit, :class => 'text_area',:maxlength => 15, :placeholder =>'Accepts up to 15 Digits' %> 
    </div> 
    </div> 
    <div class="field"> 
    <%= f.label :total_amount, :class => 'control-label' %> 
        <div class="controls"> 

    <%= f.text_field :total_amount, :class => 'text_area', :maxlength => 15, :placeholder =>'Accepts up to 15 Digits' %> 
    </div> 
    </div> 
    <div class="field"> 
    <%= f.label :mode_of_payment, :class => 'control-label' %> 
        <div class="controls"> 

    <%= f.select :mode_of_payment, options_for_select(%w[Cash Cheque Transfer LC]), :class => 'text_area', :placeholder => 'Select mode of payment' %> 
    </div> 
    </div> 
    <div class="field"> 
    <%= f.label :status, :class => 'control-label' %> 
         <div class="controls"> 

    <%= f.select :status, options_for_select(%w[Paid Pending]), :class => 'text_area' %> 
    </div> 
    </div> 
    <div class="field"> 
    <%= f.label :shipping_country, :class => 'control-label' %> 
         <div class="controls"> 

    <%= f.country_select :shipping_country, {priority: %w(ID US CA), prompt: 'Please select a country'}, :class => 'text_area' %> 
    </div> 
    </div> 
    <div class="control-group"> 
     <%= f.label :attachment , :class => 'control-label' %> 
     <div class="controls"> 
     <%= f.file_field :avatar, :multiple => true, name: "attachment[avatar][]", :class => 'file_field', :required => true %> 
     </div> 
    </div> 
    <div class="form-actions1"> 
    <%= f.submit :class => 'btn btn-primary' %> 
    <%#= f.submit "cancel", :class => 'btn btn-danger', method: :delete, data: { confirm: 'Are you sure you want to cancel' } %> 
    <%= link_to "Cancel", invoice_details_path(), :class => 'btn btn-danger', data: { confirm: 'Are you sure you want to cancel' } %> 

    </div> 
<% end %> 
     <%= link_to "Cancel", invoice_details_path(), :class => 'btn btn-danger', data: { confirm: 'Are you sure you want to cancel' } %> 

     </div> 
    <% end %> 

ответ

0

вам просто необходимо предоставить ссылку для загрузки любого asset.For скрепку, это то, как я загрузить актив (изображение/аудио/видео)

def download_video 
    @video = Video.find params[:id] 
    redirect_to @video..avatar.expiring_url(10) 

end 
+0

Спасибо за ответ @Milind –

+0

@ dineshgandra, если вам понравился ответ, пожалуйста, примите, нажав кнопку проверки :) – Milind

Смежные вопросы