项目当中,图片上传以及图片的大小调整是经常会用到的一个功能!
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)
并生成相应的scaffold:
ruby script/generate scaffold Entry upload
4.修改model,并限制只能图片上传
代码
- class Entry < ActiveRecord::Base
- validates_format_of :image,
- :with=>/^.*(.jpg|.JPG|.gif|.GIF)$/,
- :message => "你只能上传JPG或则GIF的图片文件"
- file_column :image, :magick => {
- :versions => { "thumb" => "50x50", "medium" => "640x480>" }
- }
- end
5.修改_form.rhtml
代码
- <%= error_messages_for 'entry' %>
- <!--[form:entry]-->
- <p><label for="entry_image">Image</label><br/>
- <%= file_column_field 'entry', 'image' %></p>
- <!--[eoform:entry]-->
6.修改new.rhtml
代码
- <h1>New entry</h1>
- <%= start_form_tag 'create',:multipart => true%>
- <%= render :partial => 'form' %>
- <%= submit_tag "Create" %>
- <%= end_form_tag %>
- <%= link_to 'Back', :action => 'list' %>
7.修改show.rhtml
代码
- <% for column in Entry.content_columns %>
- <p>
- <b><%= column.human_name %>:</b> <%=h @entry.send(column.name) %>
- <br>
- 原始大小:
- <%= image_tag url_for_file_column 'entry', 'image' %>
- <br>
- thumb:
- <%= image_tag url_for_file_column 'entry', 'image' ,'thumb'%>
- <br>
- medium:
- <%= image_tag url_for_file_column 'entry', 'image' ,'medium'%>
- </p>
- <% end %>
- <%= link_to 'Edit', :action => 'edit', :id => @entry %> |
- <%= link_to 'Back', :action => 'list' %>