ファイル選択ボタン(file_field)でファイルを選択して、決定ボタン(submit_tag)を押すと、別タブでcsvファイルの内容を読み込んで表示したいです。
file_fieldで選択したものをインスタンス変数に代入して、viewでparamsを使ってパラメータをみた所ファイルパスが取得できていないようでした。
ファイル選択ボタンで選択したファイルのパスを取得するにはどうしたら良いのでしょうか?また他に良い方法ありましたら教えてくださると幸いです。
# controller def index end def create @path = params[:file] end
# indexのview <%= form_tag import_filters_path, multipart: true do %> <%= file_field_tag :file %> <%= submit_tag "CSVファイルの内容を表示" ,class: "btn btn-info", formtarget: "_blank" %> <% end %>
# createのview <h1>filletrcontroller#import</h1> <%= @file %>
# model def self.updatable_attributes ["id","src_address","src_mask","dst_address","dst_mask","processing"] end
サーバーのログに出ているparamsの値
大抵文章だけじゃ回答が集まらないので、問題ないのでしたらコードをご提示ください
「ファイル」とひとえに言っても無数にあるので利用されたい種類は明記された方が回答を得やすくなると思います
あと、submitされたファイルを利用したい場合に取得する「パス」は一般的にサーバー上に一時的にアップロードされたテンポラリファイルのパスとなるはずなので、そのあたり認識しておかないと混乱するかもしれません。
テンポラリファイルの取り扱いは難しいのでしょうか?
もし難しいのであれば、submitからink_toに変更して、別タブで選択したファイルを表示することも考えていますが、それは可能なのでしょうか?
いえ全てテンポラリファイルでアップロードされるのでmoveなどで正しいファイル名(または置きたい場所)にしてから取り扱うのが通例です
params.tempfileでテンポラリファイルをインスタンス変数に格納することはできました。しかし、moveでのファイル移動のやり方がわかりません。参考サイト等、有れば教えて頂きたいです。
Rubyを知っているわけではないですが、ファイルの移動やリネームの機能は調べれば出てきそうに思います。[Rails ファイルアップロード]とかでもそれっぽい記事出てきますね
ありがとうございます。こちらでも調べてみます
あなたの回答
tips
プレビュー
