Rails3.1アプリにファイルをアップロードするための非常に基本的なシステムをセットアップしようとしています。人々が私にペーパークリップとキャリアウェーブのリンクを投げ始める前に、これは私が探している解決策ではないと言わせてください。私はこのトピックに関するいくつかの投稿を静かに読みましたが、私が見たすべてのコードはRails 3.1で減価償却されたか、人々がこの問題の解決策に到達した方法を理解していませんでした。
更新されたビュー/フォーム:(haml)
%h1 File Upload
= form_for :upload,:url=>{:action => 'uploadFile'},:html => { :multipart => true } do |f|
%p
%label{:for => "upload_file"} Select File
\:
\#{f.file_field 'datafile'}
= f.submit "Upload"
更新されたコントローラー:
class UploadController < ApplicationController
def index
render :file => 'upload/uploadfile.haml'
end
def uploadFile
file_param = params[:upload][:datafile]
post = DataFile.save(file_param)
render :text => "File has been uploaded successfully"
end
end
更新されたモデル
class DataFile < ActiveRecord::Base
def self.save(upload)
# Changed Default Destination: [__RAILS_DIR__/public/data]
name = "public/data/" + upload.original_filename
# can haz data directory?
require 'FileUtils'
FileUtils.mkdir_p(File.dirname(name))
File.open(name, "wb") { |f| f.write(upload.read) }
end
end
ソリューション:
上記は、Rails3.1アプリに簡単なアップロード機能を追加するために使用した正しいコードです。