1

コントローラ:

class SongsController < ApplicationController
    .
    .
    .

    def upload
    bucket = find_bucket
    file = params[:file] edit: previously was file = :file
    if bucket           
        AWS::S3::S3Object.store(file, open(file), bucket)
        redirect_to root_path
    else
        render text: "Couldn't upload"
    end
end  


    private

    .
    .
    .

    def find_bucket
    AWS::S3::Bucket.find('kanesmusic')
end                     
end

インデックス ビューでフォームをアップロードする:

<h2>Upload a new MP3:</h2>  

<%= form_tag upload_path, :method => "post", :multipart => true do %>  
    <%= file_field_tag :file %>  
    <%= submit_tag "Upload" %>  
<% end %>

エラー (編集):

TypeError in SongsController#upload...can't convert AWS::S3::Bucket into String

ユーザーのハードドライブからファイルを選択してアップロードできるこのフォームを作成しようとしています。

4

1 に答える 1

1

パラメータを使用する必要があります。すべての変数が格納される場所。

そのようです:

  params[:file]

ただし、ファイルのアップロードを使用する場合 (これは少し異なります)、ドキュメントを参照してください。

http://guides.rubyonrails.org/form_helpers.html#uploading-files

于 2013-09-01T12:40:39.703 に答える