Rails 4:已经存在文件的表单加载

时间:2016-07-20 18:16:00

标签: ruby-on-rails forms file ruby-on-rails-4

我有一个文件上传表单,我希望在页面加载时已经加载了一个默认文件。换句话说,其中一个参数是临时文件的路径,我希望该文件成为表单中的默认文件。

<!-- params[:checked_file] is a path to the desired file -->
<div class="content">
    <%= form_tag import_timecard_path, multipart: true do %>
      <!-- this doesn't load the file -->
        <%= file_field :file, params[:checked_file], class: "btn" %>
        <%= collection_select :timecard, :payroll_id, Payroll.all, :id, :dates %>
        <%= submit_tag "Import", class: "btn btn-primary btn-raised" %>
    <% end %>
</div>

1 个答案:

答案 0 :(得分:0)

由于安全原因,您无法为文件字段设置默认值。只有用户才能填写该字段。

但是,您可以显示“默认”文件的预览。 考虑以下: (假设@file是您预加载的文件)

<% if @file.exists? %>
  <p class="small">
    Default:
  </p>
  <%= @file.name =>
  <%= hidden_field_tag :file, @file %>
<% end %>

<%= file_field_tag :file %>

您可以使用隐藏字段存储预加载的文件。如果用户上传自己的文件,隐藏的字段值将被覆盖。

如果将文件路径保存到DB,则可以使用迁移设置默认文件路径并省略隐藏字段:

t.string :filepath, default: <path_to_temp_file>