Как загрузить файл, используя file_file_tag? - PullRequest
0 голосов
/ 30 октября 2018

Я хочу загрузить файл в форме, но не хочу, чтобы его поле находилось внутри модели. так что с помощью file_filed_tag ​​

at view:
 <%= form_tag services_datainterchange_path, method: :post, remote: true do %>
    <div class="row">
      <div class="col-sm-3 col-md-3">
        <div class="form-group">
          <%= label_tag :file %>
          <%= file_field_tag :file, required: true, class: "form-control", id: "upload_file" %>
        </div>
      </div>
      <div class="col-sm-2 col-md-2">
        <div class="form-group">
          <%= label_tag :name %>
          <%= text_field_tag :name, nil, required: true, class: "form-control", id: "upload_file_name" %>
        </div>
      </div>
      <div class="col-sm-2 col-md-2">
        <div class="form-group">
          <%= label_tag :source_type %>
          <%= select_tag :source_type, options_for_select(ApplicationRecord::SOURCE_TYPE), class: "form-control" %>
        </div>
      </div>
      <div class="col-sm-2 col-md-2">
        <div class="form-group">
          <%= label_tag :final_type %>
          <%= select_tag :final_type, options_for_select(ApplicationRecord::FINAL_TYPE), class: "form-control" %>
        </div>
      </div>
      <div class="col-sm-2 col-md-2">
        <div class="form-group">
          <%= submit_tag "Submit", class: "btn btn-primary" %>
        </div>
      </div>
    </div>
  <% end %>

На контроллере:

  directory = "public/job_files"
  Find.find( directory ) do |fpath|
    if FileTest.file?( fpath )
      fpath.clone(params[:file])
    end
  end

Но файл, не загружающий параметр, получает отправку формы. Спасибо

1 Ответ

0 голосов
/ 30 октября 2018

В контроллере:

  name = params['file'].original_filename

  uploaded_io = params['file']
  File.open(Rails.root.join('public', 'job_files', uploaded_io.original_filename), 'wb') do |file|
    file.write(uploaded_io.read)
  end
...