整合File-Column和Rmagick功能实现图片上传

项目当中,图片上传以及图片的大小调整是经常会用到的一个功能!

Rails结合几个plug-in可以说很智能的做到了这一点

1、www.kanthak.net/opensource/file_column/#features

./script/plugin install 
http://opensvn.csie.org/rails_file_column/plugins/file_column/trunk

2.确保RMagick能正常动行(要安装Imagmagick,Rmagick)

3.建立一个存放路径的model,在数据库中建立Entry数据库
并生成相应的scaffold:
ruby script/generate scaffold Entry upload

4.修改model,并限制只能图片上传

代码
  1. class Entry < ActiveRecord::Base  
  2.   validates_format_of :image,  
  3.     :with=>/^.*(.jpg|.JPG|.gif|.GIF)$/,  
  4.     :message => "你只能上传JPG或则GIF的图片文件"  
  5.   file_column :image, :magick => {   
  6.           :versions => { "thumb" => "50x50""medium" => "640x480>" }  
  7.         }  
  8. end  
<script type="text/javascript">render_code();</script>

5.修改_form.rhtml

代码
  1. <%= error_messages_for 'entry' %>  
  2.   
  3. <!--[form:entry]-->  
  4. <p><label for="entry_image">Image</label><br/>  
  5. <%= file_column_field 'entry', 'image'  %></p>  
  6. <!--[eoform:entry]-->  
<script type="text/javascript">render_code();</script>

6.修改new.rhtml

代码
  1. <h1>New entry</h1>  
  2.   
  3. <%= start_form_tag 'create',:multipart => true%>  
  4.   <%= render :partial => 'form' %>  
  5.   <%= submit_tag "Create" %>  
  6. <%= end_form_tag %>  
  7.   
  8. <%= link_to 'Back', :action => 'list' %>  
<script type="text/javascript">render_code();</script>

7.修改show.rhtml

代码
  1. <% for column in Entry.content_columns %>  
  2. <p>  
  3.   <b><%= column.human_name %>:</b> <%=h @entry.send(column.name) %>  
  4.   <br>  
  5.   原始大小:  
  6.   <%= image_tag url_for_file_column 'entry', 'image' %>  
  7.   <br>  
  8.   thumb:  
  9.   <%= image_tag url_for_file_column 'entry', 'image' ,'thumb'%>  
  10.   <br>  
  11.   medium:  
  12.   <%= image_tag url_for_file_column 'entry', 'image' ,'medium'%>  
  13. </p>  
  14. <% end %>  
  15.   
  16. <%= link_to 'Edit', :action => 'edit', :id => @entry %> |  
  17. <%= link_to 'Back', :action => 'list' %> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值