2

次のコードを使用して、ルート rails ディレクトリの /public/uploads/ フォルダーに画像をアップロードしています。

 uploaded_io = params[:product_image]
 File.open(Rails.root.join('public','uploads', uploaded_io.original_filename), 'w') do |file|
    file.write(uploaded_io.read)
 end

私のフォームは次のようになります

<%= form_tag({:action => :configure_product}, :multipart => true) do %>
<%= label_tag(:product_image, "Image:") %><br />
<%= file_field_tag 'product_image' %>
<%= submit_tag "Save and add another", :name => 'save and add another' %>
<%= submit_tag "Save", :name => 'save' %> 
<% end %>

しかし、フォームを送信しようとすると、次のエラーが発生します。

Encoding::ConfigureCategoryController#configure_product の UndefinedConversionError

ASCII-8BIT から UTF-8 への "\xFF"

書き込みモードを「w」から「wb」に置き換えたところ、次のようになりました

ConfigureCategoryController#configure_product の NoMethodError

nil:NilClass の未定義のメソッド `name'

レールの新機能。きっと助けていただければ幸いです。

4

1 に答える 1

6

open 型に b を追加して、ファイルをバイナリ ファイルとして開く必要があります。

File.open("#{ Rails.root }/tmp/uploaded_image.gif", "wb") do |f|

あなたが抱えている他の問題は、あなたのアプリケーションが何をするかに固有のものです。

于 2013-03-13T14:33:56.987 に答える