1

Привет Я использую Ruby 2 и Rails 4. Я загружаю pdf-файл и его хранящийся в public/uploads/contact/file/15/abc.pdf, потому что я использую CarrierWave, а в файле file_uploader.rb написан ниже код.Как загрузить файл, который загружается с помощью carrierwave?

def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
end 

Теперь я хочу загрузить тот же файл, который я загрузил. Как загрузить этот файл? Пожалуйста, поделитесь со мной, если у кого есть идеи. Я добавляю свой код ниже.

Показаны фотографии, которые я хочу сделать точно. Выбрав файл, загрузите его, а затем скачайте. enter image description here

Мои коды:

downloads_form.html.erb

<table class="table table-condensed table-responsive"> 
     <tbody> 
      <%= form_tag create_form_path, multipart: true do |f| %> 
      <tr>     
       <td>ABC</td> 
       <td><%= file_field_tag "contact[file]", class: "form-control" %></td> 
       <td><%= submit_tag 'Upload' %></td> 
       <td><%= link_to "Download", static_pages_downloadform_pdf_path %></td> 

      </tr> 
      <tr>    
       <td>DEF</td> 
       <td><%= file_field_tag "contact[file]", class: "form-control" %></td> 
       <td><%= submit_tag 'Upload' %></td> 
       <td><%= link_to "Download", static_pages_downloadform_pdf_path %></td> 
      </tr> 
      <% end %> 

     </tbody> 
    </table> 

static_pages_controller.rb

def create_form 
    @form_downup = Contact.new(contact_params) 
    if @form_downup.save 
     redirect_to :back 
    else 
     render downloads_form_path 
    end 
    end 

    def downloadform_pdf 

    end 

private 
    def contact_params 
     params.require(:contact).permit(:file) 

    end 

routes.rb

match '/downloads_form', to: 'static_pages#downloads_form', via: 'get', as: :downloads_form 
    match '/create_form', to: 'static_pages#create_form', via: 'post', as: :create_form  
    get "static_pages/downloadform_pdf" 

ответ

1

решаемые таким образом ,

def downloadform_pdf 

    file_type=params[:file_name] 

    contact = Contact.find_by_name(file_type) 
    actual_file_name=contact.file.to_s 
    file = File.join(Rails.root, 'public',actual_file_name) 
    send_file(file, filename: 'My-Form.pdf', type: 'application/pdf') 

    end 

Вид:

<%= form_tag create_form_path, multipart: true do |f| %> 
    <td><%= text_field_tag "contact[name]", nil, value: "G_form", class: "form-control", :readonly => true %></td> 
    <td><%= file_field_tag "contact[file]", class: "form-control" %></td> 
    <td><%= submit_tag 'Upload' %></td> 
    <td><%= link_to "Download", static_pages_downloadform_pdf_path(:file_name => "G_form") %></td> 
<% end %> 
+0

Не можете начать выражать свою благодарность за это. Взял меня пару дней, пытаясь понять это! Спасибо! – dgreen22

0

Я добавляю пример, глядя на это, вы можете решить вашу проблему

На ваш взгляд =>

<%= link_to "click here to download", signed_feeds_pdf_path(:feed_image_path => feed_image.feedimage.path), target: '_self' %> 

В контроллере =>

 def pdf  
     file_name = params[:feed_image_path].split('/').last 
     @filename ="#{Rails.root}/public/uploads/feed_image/feedimage/#{file_name}" 
     send_file(@filename , 
      :type => 'application/pdf/docx/html/htm/doc', 
      :disposition => 'attachment')   
     end