2013-06-18 45 views
1

我创建了一个表格,以上传图片的一面旗帜文件,这是在我的控制器代码:无法转换ActionDispatch :: HTTP :: UploadedFile的转换成String,而在上传轨道

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 

回答

0

我猜测它的HA因为你正在尝试对字符串测试uploaded_io,所以你最好做类似

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