file_cloumn 使用过程中遇到的问题汇总

file_column 使用(rails 2.35)
1.ruby script/plugin install http://opensvn.csie.org/rails_file_column/plugins/file_column/trunk/

在model中设定

class Photo < ActiveRecord::Base
  validates_format_of :image,
    :with=>/^.*(.jpg|.JPG|.gif|.GIF)$/,
    :message => "你只能上传JPG或则GIF的图片文件"
  file_column :image, :magick => {
          :versions => { "thumb" => "50x50", "medium" => "640x480>" }
         }   
end

2.修改上传表单可上传文件<% form_for(@photo,:html=>{:multipart=>'true'}) do |f| %>

3.修改上传表单项为

<%= file_column_field 'photo', 'image'  %>

4.为了使上传的文件随机命名修改file_column.rb 中

def self.sanitize_filename(filename)
     filename = File.basename(filename.gsub("\\", "/")) # work-around for IE
     filename.gsub!(/[^a-zA-Z0-9\.\-\+_]/,"_")
     filename = "_#{filename}" if filename =~ /^\.+$/
     filename = "unnamed" if filename.size == 0
     time = Time.now.to_i
     filename = time.to_s + '.' + File.basename(filename).split('.').last
     filename

  end

5.显示图片用url_for_file_column

  <%= image_tag url_for_file_column 'photo', 'image' %>

6.更新也要对表单进行修改

<% form_for(@photo,:html=>{:multipart=>'true'}) do |f| %>

一。file_column问题(rails 2.35)
    undefined method `image_relative_path' for nil:NilClass

把<% @photos.each do |photo| %>改为

<% for photo in @photos %>..
本方法貌似不管用,网上找的解决方案是
<% @photos.each do |photo| %> 后面加上
<% @photo = photo %>
解决了我的问题

2. =====================遇到uninitialized constant FileColumn::ClassMethods::Inflector 错误修改如下

   my_options = FileColumn::init_options(options,    
                Inflector.underscore(self.name).to_s,attr.to_s)

改为:

my_options = FileColumn::init_options(options,    
             ActiveSupport::Inflector.underscore(self.name).to_s, attr.to_s)

不过发现file_column上传失败还是会把文件放下tmp文件夹下,不知道有没有办法不让文件放tmp下,要不越来越大了!
还有其他一些报错的解决方法,Google一下即可,不在一一列举。
个人意见:
如果遇到File_cloumn 已经可以上传文件或者图片但是在一些显示上总是报错,不妨抛弃其给出的方法,自己来定制一些方法,下面这篇文章给出了一些参考:
http://www.iteye.com/topic/198778

猜你喜欢

转载自lihbobo.iteye.com/blog/1441519