As we've now get a running web application to manage our library, I propose you to add an image field management to our Book model.
To manage this part, we are going to need 3 things:
My choice go to imagemagick, but i know that this is working well with others tools like 2. Paperclip plugin
You will find very interesting infoirmation about this plugin usage at this page: http://jimneath.org/2008/04/17/paperclip-attaching-files-in-rails/
And you will be able to download it from http://github.com/thoughtbot/paperclipTo install this small plugin, just go to your hobo application root path and run the following command:
Now you have downloaded it, you are ready to use it. 3. Get the paperclip_with_hobo
Just fololowing the same process, you have to download/install this rails plugin from git:
To manage this part, we are going to need 3 things:
- an imaging tool like mini_magick or image_magick,
- the paperclip plugin for rail
- and the paper_clip_with_hobo to be used with Hobo framework.
My choice go to imagemagick, but i know that this is working well with others tools like 2. Paperclip plugin
You will find very interesting infoirmation about this plugin usage at this page: http://jimneath.org/2008/04/17/paperclip-attaching-files-in-rails/
And you will be able to download it from http://github.com/thoughtbot/paperclipTo install this small plugin, just go to your hobo application root path and run the following command:
script/plugin install git://github.com/thoughtbot/paperclip.git
Just fololowing the same process, you have to download/install this rails plugin from git:
script/plugin install git:http://github.com/tablatom/paperclip_with_hobo.git ok. let's apply some model modification to our Book modelisation.Book.rbwe need to add some new field to our app/model/book.rb class Book < ActiveRecord::Base hobo_model # Don't put anything above this fields do title :string author :string year :integer resume :text note :integer timestamps end has_attached_file :cover, :styles => { :full=>"600x600>", :medium => "300x300>", :thumb => "100x100>", :mini => "60x60>" }, :path => " :rails_root/public/media/books/covers/:id/:style.:extension", :url => "media/books/covers/:id/;style.:extension" ...end Adding such "has_attached_file" field to our Book model add in reality 4 fields to our database model after running the rake db:migrate standard rails operation : see db/migrate/20100221172242_add_attachements_cover_to_book.rb migration fileclass AddAttachmentsCoverToBook < ActiveRecord::Migration def self.up add_column :books, :cover_file_name, :string add_column :books, :cover_content_type, :string add_column :books, :cover_file_size, :integer add_column :books, :cover_updated_at, :datetime end def self.down remove_column :books, :cover_file_name remove_column :books, :cover_content_type remove_column :books, :cover_file_size remove_column :books, :cover_updated_at end endOk, now our model is updated, database too. we are ready to modify some dryml file to show this image. Go to app/views/taglibs/application.dryml and add the following declaration:At file beginning in existing "include" lines:<include src="paperclip" plugin="paperclip_with_hobo"/> And at end of file :<extend tag="form" for="Book"> <old-form merge multipart> <field-list fields="title, author, year, resume, note, cover, category" param/> <div param="actions"> <submit label="#{ht 'books.actions.save', :default=>['Save']}" param/><or-cancel param="cancel"/> </div> </old-form> </extend>This is a view modifier for a Book, adding the cover field and removing the 4 database fields. Then, modify the card dryml for Book model, in the same previous file (application.dryml) :<extend tag="card" for="Book"> <card> <h5>
<view:resume /> </p> <p> <%= I18n.t :uploaded_label %><br /> <view:created_at format="%B %d, %Y" /> by <you:user />. </p> <delete-button class="actions" /> </card> </extend>Let's test our new cover field !