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 回答