- 浏览: 161960 次
- 性别:
- 来自: 华东
文章分类
最新评论
-
chen_miao:
我是初学者,请问,我在flex设计好了带有按钮和下拉框的界面, ...
ruby+flex实现天气预报 -
barrytyh:
很多技术人员都有想法,但忘了一个根本性的问题,谁在给你MONE ...
互联网创业与软件开发 -
fireflyman:
囧......
关于并发和并行 -
fireflyman:
你老再次出现了
谈谈互联网新产品如何起步 -
qhh394141930:
写得很详细,受教了。谢谢!
从瀑布模型、极限编程到敏捷开发
先来看看rails处理图片的过程吧,用户上传图片,首先要校验图片的格式,重命名用户提交的图片,保存至上传的目录,或许你会用file-column帮你简化一些工作,如果你对上传的图片大小有特别的要求,或许你又会找来RMagick来对图片进行裁剪再保存,在图片进行显示的时候,或许在某个地方图片要显示的大小尺寸和你之前裁剪的不一致,你又要写js代码来做等比缩放,那么有没有一种一次到位的方法呢?下面给大家推荐一款rails非常棒的插件-fleximage,基本可以帮你搞定所有的关于图片的那些事儿,以下是我初步使用fleximage后所了解到的一些特性:
1 使用配置非常简单,基本不用写任何关于图片处理的代码!
2 能够帮你校验图片的有效格式
3 图片上传前可以与处理图片的格式和大小
4 图片显示时仍可以裁剪成你所需要的格式和大小
5 图片显示时可以加上一些效果,比如边框 颜色 标题
6 图片在显示可以轻松进行格式转换
………………
下面让我们一步步来享受fleximage给我提供的好处吧:)
1 安装,ruby script/plugin install http://github.com/Squeegy/fleximage.git,貌似要求你的项目要在svn的控制下才可以安装,不过没关系,我会把插件放在附件中,直接拷到你的项目中即可。
2 建立与图片相关的model,在这里配置图片的上传目录,你无需去建这个目录,fleximage会自动生成,另外还有图片的预处理信息,比如图片格式、大小、是否必须等等,这些属性非常容易理解,如下:
class Picture < ActiveRecord::Base acts_as_fleximage :image_directory => 'public/upload' use_creation_date_based_directories true image_storage_format :jpg require_image true missing_image_message 'is required' invalid_image_message 'was not a readable image' default_image_path 'public/images/rails.png' output_image_jpg_quality 85 preprocess_image do |image| image.resize '200x300' end end
3 上传图片,首先在路由中加上:map.resources :pictures,这里view中采用form_for标签,你也可以用普通form,但保证表单输入项和model属性对应起来。pictures控制器和提交图片的表单分别如下:
def new @picture = Picture.new end def create @picture = Picture.new params[:picture] @picture.update_time = Time.now @picture.create_time = Time.now if @picture.save redirect_to :action => "new" else flash[:notice] = 'Your photo did not pass validation!' render :action => 'new' end end
<%= flash[:notice] if flash[:notice] %> <% form_for @picture, :url => { :action => "create" } , :html => { :multipart => true } do |f| %> <p> <b>标题</b><br /> <%= f.text_field :title %> </p> <p> <b>上传图片</b><br /> <%= f.file_field :image_file %><br /> or URL: <%= f.text_field :url %> </p> <p> <%= f.submit "创建" %> </p> <% end %>
4 上传图片后会发现,在图片的上传目录下会有一个名字和数据库中保存的的新建记录id相同的图片,下面来显示它吧,在这里你可以再次定制你的图片显示效果,显示的图片是用fleximage自己的模板渲染的,该模板的命名是采用需要渲染图片的action的名字加上需要图片显示的格式再加flexi,比如show.jpg.flexi,这是约定好的,fleximage会自动拿它渲染需要在rails模板中显示的图片。模板分别如下:
rails模板:
<p> <%= image_tag formatted_picture_path(@picture, :gif) %> </p>
fleximage模板:
@picture.operate do |image| end
让我们看看效果吧:
5 现在发现我想把图片放大一点,还要用gif格式进行显示,并且加上边框 标题 颜色等,那在建一个fleximage模板来专门处理gif格式的图片,修改之前的视图如下:
<p> <%= image_tag formatted_picture_path(@picture, :gif) %> </p> @picture.operate do |image| image.resize '400x400', :crop => true image.border :size => 20, :color => 'green' image.text 'I am DHH' image.unsharp_mask image.shadow end
效果如下:
- fleximage.git.rar (669.7 KB)
- 下载次数: 542
评论
<div class='quote_div'>
<div class='quote_title'>godfox 写道</div>
<div class='quote_div'>问一下,这个插件么有数据表的定义呢?难道不用数据库的支持?</div>
<p> </p>
<p> 发帖不看回复。</p>
<p> </p>
<p><%= image_tag formatted_picture_path(@picture, :gif) %> <br/>注意这句,model中已经配置了图片的目录地址,@picture中存有图片名,看源码可知是采用图片的id做名字的,再加上你的主域名,就是该图片的url </p>
</div>
<p>谢谢回复啊,我的意思是这样的,Pictrure 这个模型 对应 的数据表的字段是什么?有了对应的字段,才能把对应的图片信息保存吧,但我看到文档里定义的模型,</p>
<p>都没有任何相关的定义</p>
<pre name='code' class='ruby'> class Picture < ActiveRecord::Base
acts_as_fleximage :image_directory => 'public/upload'
use_creation_date_based_directories true
image_storage_format :jpg
require_image true
missing_image_message 'is required'
invalid_image_message 'was not a readable image'
default_image_path 'public/images/rails.png'
output_image_jpg_quality 85
preprocess_image do |image|
image.resize '200x300'
end
end </pre>
<p> 不好意思,刚刚学习rails,麻烦解答一下</p>
<div class='quote_div'>问一下,这个插件么有数据表的定义呢?难道不用数据库的支持?</div>
<p> </p>
<p> 发帖不看回复。</p>
<p> </p>
<p><%= image_tag formatted_picture_path(@picture, :gif) %> <br/>注意这句,model中已经配置了图片的目录地址,@picture中存有图片名,看源码可知是采用图片的id做名字的,再加上你的主域名,就是该图片的url </p>
<%= image_tag formatted_picture_path(@picture, :gif) %>
他是http://127.0.0.1:3000/pictures/3.jpg
???
注意这句,model中已经配置了图片的目录地址,@picture中存有图片名,看源码可知是采用图片的id做名字的,再加上你的主域名,就是该图片的url
数据库存的是路径,图片最终要是进文件夹里面呆着
<div class='quote_title'>leon0122 写道</div>
<div class='quote_div'>我按照上面的步骤做的时候,生成model picture就会报错: <br/>ERROR :: FlexImage requires the RMagick gem. http://rmagick.rubyforge.org/install-faq.html <br/>ERROR :: FlexImage requires the RMagick gem. http://rmagick.rubyforge.org/install-faq.html <br/>我用的是netbeans6.0 <br/>不知道楼主用的rails是什么版本的?? <br/>我也下载了rmagick-2.5.2.gem 也不行,不知道是不是版本的问题</div>
<p> </p>
<p> 我用的是rails 2.0.2/nb6.1,RMagick是2.0,不过我当时没遇到什么问题, </p>
<p>你是第二步出错的吗?先重启服务器 or 重启电脑试试?</p>
<p> </p>
ERROR :: FlexImage requires the RMagick gem. http://rmagick.rubyforge.org/install-faq.html
ERROR :: FlexImage requires the RMagick gem. http://rmagick.rubyforge.org/install-faq.html
我用的是netbeans6.0
不知道楼主用的rails是什么版本的??
我也下载了rmagick-2.5.2.gem 也不行,不知道是不是版本的问题
这个东西非常好用,口碑也不错,强烈推荐使用
# @picture.operate do |image| # image.resize '400x400', :crop => true # image.border :size => 20, :color => 'green' # image.text 'I am DHH' # image.unsharp_mask # image.shadow # end
这里只是对图片在展示的时候进行了处理,还是对原图片进行了修改(或者是为这个样式生成了新图片),不太清楚。
发表评论
-
创建你自己的rails generator
2010-01-27 15:01 1218在多个rails项目中,有时需要共享一些公用的componen ... -
rspec实践一(从零开始)
2009-12-25 12:52 1379关于利用rspec的文章感 ... -
javascript-image-cropper-ui with rails
2009-07-31 23:18 1497在rails上传头像的过程中,一般后端会采用rma ... -
简简单单在rails中做定时任务
2009-07-27 19:58 3384在平时的开发过程中,经常会遇到一些定时任务的需求 ... -
用restful_authentication和role_requirement搭建验证授权系统
2008-09-30 21:20 1552转自 http://fanix.iteye.com/blog/ ... -
Rails中html_escape和sanitize
2008-09-26 13:33 2554转自:http://blackanger.blog.51cto ... -
Rails简洁的模板系统Malline
2008-09-14 15:25 1402前段时间听说ra ... -
在rails中优雅的进行模型校验
2008-09-07 20:53 2186在用rails进行开发时,最常见的操作的是前台提交 ... -
win+apache+mongrel下部署ROR
2008-09-01 20:16 1138gem install mongrel #选择最 ... -
Ruby中使用Memecached
2008-09-01 20:03 1293sudo apt-get install memcached ... -
在rails中使用memcached
2008-09-01 20:00 1123libeven memcached的使用需要li ... -
在Ruby中设计Callback机制
2008-08-31 21:11 1935阅读Paperclip源码,发现里面有一个不错的callbac ... -
我怎么就觉得rails适合做大型应用
2008-08-25 13:24 3512之前读了不少 ... -
像操作ActiveRecord一样操作XML
2008-08-10 18:05 1265在开发RESTful应用或者实现多个应用系统交互时 ... -
ImageMagick/Rmagick 安装的那些事儿
2008-08-05 12:54 1169windows平台×××××××××××××××××××××× ... -
让google来为rails画图表
2008-07-26 17:05 1365去年年底的时候,所做的一个rails项目涉及到图表 ... -
10分钟给一个rails遗留系统添加标签功能
2008-07-19 10:18 987早些时候做过了一个rails系统,当时没有涉及到标签的功 ... -
分享一款word风格的rails在线编辑器
2008-07-09 16:51 1502在线编辑器是web应用中最常见的东西了,关于它的作用 ... -
让rails处理图片再简单一点
2008-07-07 12:50 1109先来看看rails处理图片的过程吧,用户上传图片, ... -
利用rails轻松建立个性化主页门户
2008-07-04 12:10 1115简单来说,个性化主页就是结合了各种小模块和网络信息 ...
相关推荐
在这个图片分享项目中,模型可能包括`User`(用户)、`Image`(图片)等,视图则展示图片和用户界面,控制器处理用户的请求和响应。 3. **Sign标签**: "Sign"可能是项目的登录或注册模块,它涉及用户认证和授权。...
《Rails101_by_rails4.0》通过 Lean Publishing 的出版流程,让书籍在发布过程中能够不断吸纳读者的反馈,通过多次迭代优化内容,直至形成一本高质量的自学教程。Lean Publishing是指利用轻量级的工具,快速出版一...
8. **Asset Pipeline**:Rails的资产管道处理JavaScript、CSS和图像等静态资源,可以进行压缩、合并、版本控制,提升页面加载速度。 9. **ActiveJob**:Rails的后台任务处理框架,可以配合各种队列服务(如Resque、...
- 测试安装: 创建一个简单的Rails应用来验证是否成功安装。 #### 五、练习作业0-Hello World - **目标**: - 学习如何创建第一个Rails应用程序。 - **过程**: - 创建新项目。 - 设置数据库配置。 - 创建控制器...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby。Rails 常被称作 Ruby on Rails,它让 Web 开发变得从未这么快速,也从未如此简单。在过去的几年中,《Ruby on Rails Tutorial》这...
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...
从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...
Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...
3. **actionmailer-2.1.0.gem**:ActionMailer使得在Rails应用中发送和接收电子邮件变得简单。它提供了一个抽象层,可以方便地创建、发送和接收邮件,同时处理SMTP服务器的配置和其他邮件相关的设置。 4. **...
Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY(Don't Repeat Yourself)原则和开发效率。 Rails的核心特性包括: 1. **约定优于配置**(Convention Over Configuration):...
在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...
在Rails API中,模型(Model)代表应用程序的数据结构,它与数据库交互,处理数据验证和业务逻辑。视图(View)是用户看到和与之交互的部分,而控制器(Controller)作为模型和视图之间的协调者,处理用户请求并决定...
标题 "rails2.3.2" 指的是 Ruby on Rails 框架的一个特定版本,即 2.3.2。Ruby on Rails(通常简称为 Rails)是一个基于 Ruby 语言的开源 Web 应用程序框架,它遵循 Model-View-Controller (MVC) 设计模式,用于构建...
12. **Rails API模式**:Rails 4引入了API模式,使得构建RESTful JSON接口变得更加简单。 13. **Webpacker和Webpack**:Rails 5.1以后,Webpacker成为默认的前端资产打包工具,整合了Webpack,使得引入现代...
本书《Component-Based Rails Applications》主要介绍了如何使用Rails引擎(Rails ...这种基于组件的设计理念,能够让Rails应用在大型项目中保持灵活和可扩展,同时能够方便地集成第三方模块,提高开发和部署的速度。
### Rails 101S: 初学者必备的Ruby on Rails 宝典 #### Introduction: 深入了解Ruby on Rails 《Rails 101S》是一本为Ruby on Rails初学者准备的手册,旨在帮助新手快速入门并掌握基本的开发技能。本手册将从最...
总的来说,Ruby on Rails是一个强大的开发工具,它简化了Web应用的构建过程,让开发者可以更专注于创新和解决问题,而不是琐碎的配置和代码复写。通过深入学习和实践,你可以提升自己的技术水平,为未来的事业发展...
- **用途**:可用于在保存或删除记录前执行额外的逻辑处理。 ### 总结 通过以上介绍,我们不仅了解了Rails的基础知识,还深入探讨了其核心组件——Active Record的相关概念和技术细节。这些内容对于初学者来说是...
Rails API 是一个专门为构建应用程序接口(API)设计的Ruby on Rails框架版本。它专注于提供一套轻量级的工具,使得开发者能够快速、高效地创建RESTful API服务。Rails API的目的是为了提高性能,并减小API服务器与...