0

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アプリに簡単なアップロード機能を追加するために使用した正しいコードです。

4

1 に答える 1

0

不要な引数「file」をuploadFileメソッドに渡しています。これはアクションであり、引数を渡すことはできません。「file」引数を削除するだけです。

于 2012-08-05T21:25:16.993 に答える