在rails中上传文件时,无法将ActionDispatch :: Http :: UploadedFile转换为String

时间:2013-06-18 14:51:40

标签: ruby-on-rails forms file-upload controller haml

我已经创建了一个表单来上传横幅图片,这是我控制器中的代码:

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

1 个答案:

答案 0 :(得分:0)

我猜它正在发生,因为你试图对一个字符串测试uploaded_io你最好做一些像

这样的事情
uploaded_io = params[:banner]
if uploaded_io.is_a?(ActionDispatch::Http::UploadedFile)
  # file processing logic
end