Railsでのファイルのアップロード-データはオブジェクトですが、どのようにそれをビューに返すのですか?
-
05-07-2019 - |
質問
Railsプロジェクトでアップロードを実行すると、データベースに保存されます
---!ruby / object:File content_type:application / octet-stream original_path:my.numbers
自分のビューでのみmy.numbersを返すようにするにはどうすればよいですか?
たくさんありがとう! マルコ
ps。できればattachment_fuやその他のプラグインは使いたくありません。
解決
実際には、ファイルのアップロードはデータではなくFileオブジェクトとしてコントローラーによって受信されるため、読み込むのはユーザーの責任です。通常、アップロードされたファイルは一時ディレクトリに保存され、そのファイルハンドルが開いていますparams。
データを取得するには、次のようなことができます:
def create
# Read in data from file into parameter before creating anything
if (params[:model] and params[:model][:file])
params[:model][:file] = params[:model][:file].read
end
@model = MyModel.create(params[:model])
end
おそらく、データベースの列にバイナリデータを格納できることを確認する必要があります。 MySQLの移行では、これは:binary列タイプです。
他のヒント
ヘルパーoriginal_filenameを使用して、アップロードされたファイルの名前にアクセスできます。 params [:model] [:file] .original_filename
所属していません StackOverflow