2016-07-20 8 views
0

ページが読み込まれたときに既定のファイルが既にロードされているようなファイルアップロードフォームがあります。言い換えれば、paramsの1つが一時ファイルのパスであり、そのファイルをフォームのデフォルトファイルにしたいと思います。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> 

答えて

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> 
関連する問題