整合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' %> 

你可能感兴趣的:(JavaScript,Ruby,Rails,ActiveRecord,OpenSource)