我有一个文件上传表单,我希望在页面加载时已经加载一个默认文件。换句话说,其中一个params是临时文件的路径,我希望该文件是.格式的默认文件
<!-- 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>
由于安全原因,不能为文件字段设置默认值。只有用户可以填写该字段。
但是,您可以显示"默认"文件的预览。考虑以下内容:(假设@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>