【问题标题】:Can't convert ActionDispatch::Http::UploadedFile into String whilst uploading a file in rails在 Rails 中上传文件时无法将 ActionDispatch::Http::UploadedFile 转换为字符串
【发布时间】:2013-06-14 20:32:04
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    我猜它正在发生,因为您正在尝试针对一个字符串测试 upload_io,您最好执行类似的操作

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 2016-01-08
      • 2011-10-23
      相关资源
      最近更新 更多