【问题标题】:Rails 4: Have form load with file already presentRails 4:使用已经存在的文件加载表单
【发布时间】:2016-07-20 18:16:00
【问题描述】:

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

<!-- 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>

【问题讨论】:

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


    【解决方案1】:

    出于安全原因,您不能为文件字段设置默认值。只有用户可以填写该字段。

    但是,您可以显示“默认”文件的预览。 考虑以下: (假设@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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-17
      • 2014-01-12
      • 2016-05-29
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      相关资源
      最近更新 更多