1

バナーの画像をアップロードするフォームを作成しました。これはコントローラーのコードです。

def banner_editprocess
  uploaded_io = params[:banner]
    if uploaded_io != nil && uploaded_io != ""
      File.open(Rails.root.join('app','assets','images','banner', uploaded_io.original_filename), 'wb') do |file|
      file.write(uploaded_io.read)
    end
  end
  r = Banner.find(params[:id])
  params.each do |k, v|
    r[k] = v
  end
  if uploaded_io != nil && uploaded_io != ""
    if r.banner != uploaded_io.original_filename
      if r.banner != "" && r.banner != nil
        File.delete(Rails.root.join('app','assets','images','banner', r.banner))
      end
    end
    r.banner = uploaded_io.original_filename
  end

これが私の見解です:

= form_tag("/cms/servicepages/banner-edit-process", :multipart => true) do
%input{ :type => "hidden", :name => "id", :value => "#{@t.id}" }
  %table

    %tr
      %th Banner Background      
    %td
      %input{ :type => "file", :name => "banner", :value => "#{@t.banner}"}

画像をアップロードしようとすると、次のエラーが発生します。

can't convert ActionDispatch::Http::UploadedFile into String
4

1 に答える 1

0

Upload_io を文字列に対してテストしようとしているために発生していると思います。次のようなことをしたほうがよいでしょう

uploaded_io = params[:banner]
if uploaded_io.is_a?(ActionDispatch::Http::UploadedFile)
  # file processing logic
end
于 2013-06-18T15:07:56.743 に答える