rails上传图片代码实例_ruby专题

今天讲解一下rails的图片上传,就是最平常的上传图片 这里的rails版本2.3.5

首先新建一个write_pic model内容如下:

复制代码 代码如下:

class WritePic
require "RMagick"
require "uuid"
def self.write(pic_data,ori_name,resize = nil,file_type = "jpg",tag=false)
#File.delete("c:/programData/ruby-uuid") if RAILS_GEM_VERSION == '2.1.2'
uuid = ori_name || "#{UUID.new.generate}.#{file_type}"
i = Magick::Image.from_blob(pic_data).first
if resize
p=resize[:width].to_i*1.00 /i.columns
i.resize!(resize[:width],resize[:height]|| i.rows*p)
end
wh=0
width = i.columns
height = i.rows
if width > height
wh =1
end
i.write("#{RAILS_ROOT}/public/images/user_pic/#{uuid}")
if tag
return wh,uuid
else
return uuid
end
end
def self.get_pic(url)
uuid = "#{UUID.new.generate}.#{file_type}"
img_orig1 = Magick::Image.read(url).first
image1 = img_orig1.resize_to_fit(300,300)
image1.write("#{RAILS_ROOT}/public/images/weibo_pic/#{uuid}")
return uuid
end
end

上传 图片是用的插件所以最上面加载了插件。

调用write_pic 这个model的model文件写法如下

复制代码 代码如下:

class Theme < ActiveRecord::Base
require "RMagick"
require "uuid"
def _image=(picture_field)
if picture_field != ""
self.image = WritePic.write(picture_field.read,self.image,nil)
end
end
def _image
self.image
end
def suoluetu=(picture_field)
if picture_field != ""
self.thumbnail = WritePic.write(picture_field.read,self.thumbnail,nil,"png")
end
end
def suoluetu
self.thumbnail
end
end

 

controller里面不用在乎太多,直接上view

复制代码 代码如下:

<h1>New theme</h1>
<% form_for(@theme,:html=>{:multipart=>'true'}) do |f|%>
<%= f.error_messages %>

<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :color %><br />
<%= f.text_field :color %>
</p>
<p>
<%= f.label :lastcolor %><br />
<%= f.text_field :lastcolor %>
</p>
<p>
<%= f.label :image %><br />
<%= f.file_field :_image %>
</p>
<p>
<%= f.label :thumbnail %><br />
<%= f.file_field :suoluetu %>
</p>
<p>
<%= f.submit "Create" %>
</p>
<% end %>

<%= link_to 'Back', themes_path %>

 

时间: 2024-10-16 04:19:37

rails上传图片代码实例_ruby专题的相关文章

Ruby连接使用windows下sql server数据库代码实例_ruby专题

require 'win32ole' class SqlServer # This class manages database connection and queries attr_accessor :connection, :data, :fields def initialize @connection = nil @data = nil end def open # Open ADO connection to the SQL Server database connection_st

Ruby使用设计模式中的代理模式与装饰模式的代码实例_ruby专题

代理模式 需求: 小明让小李替他追小丽(送洋娃娃,送花,送巧克力) 没有代理的代码: # -*- encoding: utf-8 -*- #追求者类 class Pursuit attr_accessor :mm def initialize(mm) @mm = mm end def give_dolls puts "#{mm.name} 送你洋娃娃" end def give_flowers puts "#{mm.name} 送你鲜花" end def give_

Rails脚手架使用实例_ruby专题

脚手架是rails非常省事的方法,一些简单的增删改查脚手架都能实现,省去了我们不必要的麻烦,那么怎么用rails的脚手架呢,今天来讲解一下. .指定端口启动rails项目 复制代码 代码如下: ruby script/server webrick -p 3000 0.创建一个项目 复制代码 代码如下: rials demoshop 1.用脚手架创建产品(控制 模型 显示 数据) 复制代码 代码如下: script/generate scaffold product title:string de

收集的多个ruby遍历文件夹代码实例_ruby专题

一.遍历文件夹下所有文件,输出文件名 复制代码 代码如下: def traverse_dir(file_path)     if File.directory? file_path         Dir.foreach(file_path) do |file|             if file !="." and file !=".."                 traverse_dir(file_path+"/"+file)   

Ruby中用线程实现经典的生产者消费者问题代码实例_ruby专题

示例代码: 复制代码 代码如下: require "thread" puts "ProAndCon"    queue = Queue.new    #用队列Queue实现线程同步     producer = Thread.new do     10.times do |i|          sleep rand(i) # 让线程睡眠一段时间          queue << i          puts "#{i} produced&

使用Ruby on Rails快速开发web应用的教程实例_ruby专题

 Ruby on Rails 正在令整个 Web 开发领域受到震憾.让我们首先了解底层的技术:     Ruby 是一门免费的.简单的.直观的.可扩展的.可移植的.解释的脚本语言,用于快速而简单的面向对象编程.类似于 Perl,它支持 处理文本文件和执行系统管理任务的很多特性.     Rails 是用 Ruby 编写的一款完整的.开放源代码的 Web 框架,目的是使用更简单而且更少的代码编写实际使用的应用程序. 作为一个完整的框架,这意味着 Rails 中的所有的层都是为协同工作而构造的,所以

rails创建应用程序实例_ruby专题

安装了Rails框架之后,你同时也得到了一个新的命令行工具:rails.这个工具可以用于构造每个新的Rails应用程序. 为什么我们需要这么一个工具--我是说,为什么不抄起最顺手的编辑器,从头开始编写应用程序的每行代码呢?呃--我们确实可以这样做,但Rails可以在 幕后变很多戏法,让我们只需要做最少量的配置即可运行一个应用程序.为了让这些戏法能够生效,Rails必须能够找到应用程序中的各种组件.正如我们稍后 将会看到的,这就意味着我们必须创建某种固定的目录结构,并且将我们的代码放在合适的地方.

ruby on rails 代码技巧_ruby专题

git仓库输出 git archive --format=tar --prefix=actasfavor/ HEAD | (cd /home/holin/work/ && tar xf -) 输出到/home/holin/work/actasfavor/目录下 Posted by holin At May 16, 2008 16:42 加载plugins中的controller和model # Include hook code here require 'act_as_favor' #

Ruby类继承、抽象类、类拓展混入、代理类实例_ruby专题

总结一下工作中遇到的类扩展: 1.类继承: 当多个类公用很多方法的时候可以将公用方法部分抽取出来,需要的类做相关继承. 例子: 复制代码 代码如下: class A < ActiveRecord::Base     def a         p "it was a "     end end class B<A end class C<A end B.new.a #=>"it was a " C.new.a #=>"it w