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 已经可以上传文件或者图片但是在一些显示上总是报错,不妨抛弃其给出的方法,自己来定制一些方法,下面这篇文章给出了一些参考:
[url]http://www.iteye.com/topic/198778[/url]
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 已经可以上传文件或者图片但是在一些显示上总是报错,不妨抛弃其给出的方法,自己来定制一些方法,下面这篇文章给出了一些参考:
[url]http://www.iteye.com/topic/198778[/url]