- 浏览: 2072637 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
One of my project Lucas needs to enable users to upload pictures as their logos. How to get things done? In the book Agile Web Development with Rails, I’ve found a way.
All together, the code counts less than 50 lines.
Firstly we have to create a table to record the data. The columns should at least contain id, content-type and data, and the SQL maybe like follows:
CREATE TABLE IF NOT EXISTS `logos` ( `id` int(10) unsigned NOT NULL auto_increment, `data` blob NOT NULL, `content_type` varchar(30) collate utf8_bin NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT;
OK. It’s time to start coding, and we have to create the model Logo and controller Logo.
ruby script/generate model Logo ruby script/generate controller Logo get got show
In app/controllers/logo_controller.rb, there’re 3 actions. “get” will display a upload form, and “got” is the final page if upload succeeded, which show the picture by a tag. Of course, we use the “show” action to get data from the database and send to user.
Let’s start coding here:
app/models/logo.rb
class Logo < ActiveRecord::Base validates_format_of :content_type , :with => /^image/, :message => "你只能上传图片" def uploaded_logo=(logo_field) self.content_type = logo_field.content_type.chomp self.data = logo_field.read end end
The function “uploaded_logo” contains a little bit magic. Continue to see the upload form you’ll see why use this.
app/views/logo/get.rhtml
<%= error_messages_for("logo") -%> <% form_for (:logo, :url=>{:action => 'save'} , :html => {:multipart => true} ) do |form|%> <%= form.file_field("uploaded_logo") %> <%= submit_tag("Upload")%> <%end%>
In the above template file, we created a upload field named “uploaded_logo”, so when the form is submitted, the function “uploaded_logo=” will be called . Of course, we need to edit the controller.
app/controllers/logo_controller.rb
class LogoController < ApplicationController def get @logo = Logo.new end def save @logo = Logo.new(params[:logo]) if @logo.save redirect_to(:action => "got" , :id => @logo.id) else render :action=>"get" end end def view @logo = Logo.find(params[:id]) send_data(@logo.data, :type=>@logo.content_type,:disposition=>"inline") end def got @logo = Logo.find(params[:id]) end end
Take a look at the “view” action, it makes good use of function “send_data”. Now we’re able to get the picture via /view/id , which contains extra content-type message in the header. Now it’s the last part of this demo, the template of action “got”.
app/views/logo/got.rhtml
<img src="<%= url_for :action=>"view", :id=>@logo.id %>" />
Of course, to make the pages better, you have to create a layout for logo. Besides, you may need to do some verification before enabling the upload.
If you want to store the pictures in files, just read the data out and write to a new file, which is in a visitable folder.
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 928heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3255reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3288alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1470问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1380这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1344以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1903首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2272这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2263开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1234class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8138TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2018刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1481这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1939面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17209git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2732简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 945第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1692开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12952Asset Pipeline 提供了内建 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2115又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
rails 2.3 chm文档 官方最新版
Railsbrain是一个专注于Rails框架的在线资源平台,而这个“railsbrain网站的rails2.3文档(bug修复版)”显然是一份针对Rails 2.3版本的更新文档,旨在修复用户在浏览和交互过程中遇到的问题。Rails是Ruby编程语言的...
Ruby on Rails Guide:是rails官方教程,本人为了大家学习查阅的方便,制成chm格式。就如同java doc的chm格式一样方便。
10. **插件和Gem**:Rails的生态系统中,Gem是第三方库的主要形式,它们提供了额外的功能,如Devise用于身份验证,CanCanCan用于授权,Paperclip或Carrierwave处理文件上传等。 11. **部署**:了解如何将Rails应用...
Rails 3.2 API 是一个重要的开发资源,主要用于Ruby on Rails框架的开发。Rails是基于Ruby语言的一个开源Web应用程序框架,遵循MVC(Model-View-Controller)架构模式,广泛应用于构建动态网站和Web应用程序。Rails ...
描述中的 "ruby and rails 的框架rails-2.3.3.zip" 提到的是 Rails 的另一个版本 2.3.3,尽管与标题中的版本号不完全匹配,但我们可以推断这是关于 Rails 2.3.x 系列的讨论。这个压缩包很可能包含了 Rails 框架的源...
通过上述内容,我们可以看到Paperclip为Rails应用中的文件上传提供了强大的功能和灵活性。无论是简单的图片上传还是复杂的文件管理,Paperclip都能轻松应对。在实际开发中,可以根据项目需求对这些知识点进行深入...
Rails 多文件上传插件实现详解 Rails 多文件上传插件是基于 Ruby on Rails 框架的一款插件,旨在实现多文件的同时上传,控制文件的格式、数量,并且兼容多种浏览器,包括 IE6、7、Firefox 等。下面是对插件的详细...
rails guides的CHM版本,这个向导的版本是2.3
所有必需的信息都可以在Wiki上找到: 如有疑问,请使用i18_routing谷歌论坛: 适用于Rails 2.3、3.0、3.1和3.2下一个版本的TODO(写于2010年6月9日) 处理同一资源名称的多个翻译(例如:嵌套和非嵌套资源) 处理...
在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称的文件时,文件名可能会出现乱码。这个问题主要是由于字符编码不兼容导致的。Rails默认使用UTF-8编码,但文件系统或者某些外部...
jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成 Rails 文件上传jQuery-File-Plugin 是一个文件上传插件,由的Tschan 。 jQuery文件上传功能多文件选择。drag&拖放支持。进度栏和jQuery预览图像。 支持...
5. **CarrierWave**: 如果你的Rails版本较低,或者需要更灵活的文件上传控制,可以使用CarrierWave库。它提供了一个简单的接口来处理文件上传,包括存储位置、版本管理和缩略图生成等。 6. **Paperclip**: ...
在Ruby on Rails(Rails)框架中,为文件上传添加进度条功能可以显著提升用户体验,让用户在上传大文件时能够清楚地看到进度,增加交互性。本文将深入探讨如何在Rails应用中实现这一功能。 首先,我们需要理解文件...
Rails 2.3 和 3 兼容。 关于 PgQ 安装 安装天空工具:Ubuntu 11.10: # apt-get install postgresql-server postgresql-client # apt-get install skytools 宝石档案: gem 'pgq' 从 database.yml 创建股票...
最后,为了处理文件上传的进度,我们可以使用HTML5的`FormData`对象和`XMLHttpRequest`的`progress`事件。在`form_for`中,我们添加一个`onsubmit`事件处理器: ```html , url: uploads_path, ...
10. **日志记录**:在`log`目录下的日志文件可以提供关于文件上传操作的详细信息,这对于排查问题非常有用。确保日志配置得当,以便在出现问题时能快速定位。 升级Rails版本涉及的文件上传变更可能需要对代码进行...
通过JRuby,我们可以使用`jruby-wrappers`或`jruby-complete`来创建自包含的JAR文件,这基本上就是一个可执行的Rails应用。JRuby允许Rails应用运行在任何支持Java的平台上。 2. **Warbler**: 如果你打算在Java应用...
swagger-docs, 为 Rails api生成 swagger ui json文件,使用简单的DSL Swagger::Docs使用api为 Rails 应用生成swagger的ui json文件。 你可以向控制器类添加 swagger DSL,然后运行一个rake任务来生成json文件。 ...
在Rails中,最常用的文件上传库是Paperclip和CarrierWave,但现在更推荐使用ActiveStorage,这是Rails 5.2及更高版本内置的一个功能。ActiveStorage直接与数据库交互,方便管理和存储文件,同时支持通过第三方服务如...