레일 스 는 Paperclip 으로 사진 을 업로드 합 니 다.

Paperclip Rails 이미지 업로드 플러그 인
   1.종이 클립 다운로드 보석 가방
 (1)Gemfile 에 쓴다
gem 'paperclip'

 
  (2)터미널 에서 실행
bundle install

   
    2.paperclip 사용
  (1)터미널 에 입력:
rails g paperclip image_news image

   이렇게 하면 원래 의 imagenews model 에 image 속성 을 추가 하 는 동시에 app/db/migrate 폴 더 에서
   새 xxxxxxadd_attachment_image_to_image_news.rb 파일 내용:
class AddAttachmentImageToImageNews < ActiveRecord::Migration
  def self.up
    change_table :image_news do |t|
      t.attachment :image
    end
  end

  def self.down
    drop_attached_file :image_news, :image
  end

end

 
  (2)데이터베이스 이전,터미널 입력:
rake db:migrate

   
   하면,만약,만약...뉴스 모델 에 다른 속성 이 없 으 면 schema.rb 파일 에서:
ActiveRecord::Schema.define(version:xxxxxxx) do

  create_table "image_news", force: true do |t|
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "image_file_name"
    t.string   "image_content_type"
    t.integer  "image_file_size"
    t.datetime "image_updated_at"
  end

end

 
 (3)이어서 image뉴스.rb 파일 에 다음 과 같이 적 혀 있 습 니 다.
class ImageNews < ActiveRecord::Base
  has_attached_file :image,                                                                          //:styles => { :small => "150x150>"},                
                    :url  => '/images/:id/:style/:basename.:extension',
                    :path => ':rails_root/public/images/:id/:style/:basename.:extension'
  validates_attachment_presence :image
  validates_attachment_size :image, :less_than => 5.megabytes
  validates_attachment_content_type :image, :content_type => %w(image/jpeg image/png)
end

   위의 코드 를 사용 하려 면:styles 는 imageMagick 이 설치 되 어 있 는 지 확인 해 야 합 니 다.설치 하지 않 으 면 오류 가 발생 합 니 다.
   그리고. :path :rails_root/Public 뒤의 것 은:url 과 같 아야 합 니 다.여기 처럼.
   'images/:style/:basename.:extension' 
    
:rails_root 
    The path to the Rails application.(  Rails     ,   RAILS_PATH  。) 
:rails_env 
    The current environment (e.g. development, production)(      , :development,production) 
:class 
    The class name of the model that the attachment is part of, underscored and pluralised for your convenience.(             ,           。) 
:basename 
    The name of the originally uploaded file without its extension.(          ,     。) 
:extension 
    The file extension of the originally uploaded file.(         ) 
:id 
    The ID of the model that the attachment is part of.(      id) 
:id_partition 
    The same as :id but formatted as a string using ID partitioning.( :id  ,     ID partitioning     。) 
:attachment 
    The name of the attachment attribute (defined in the call to has_attached_file) downcased and pluralised for your enjoyment.(              ,     has_attached_file       ,  、    。) 
:style 
    The current style of the attachment file being processed (e.g. in the ‘discarding an uploaded image‘ example above the :style would be one of ‘original’ or ‘small’) (              ,         。)
    
 
   (4)controller(controllers/imageupload_controller.rb)에 다음 과 같이 쓰 여 있 습 니 다:
class ImageUploadController < ApplicationController

  def image_upload_view
    @image_news = ImageNews.new
  end

  def upload
    @image_news = ImageNews.new
    @image_news.image = params[:image_news][:image]
    @image_news.save
    redirect_to(:action => 'image_show_view', :id => @image_news.id)
  end

  def image_show_view
    @image_news = ImageNews.find(params[:id])
  end

end

   
   (5)view(views/imageupload_view.html.erb)작성:
<div style="background: #F5F5F5; width: 659px; padding: 50px; margin: 100px auto auto auto">
  <%= form_for @image_news, :url =>{:action => 'upload'}, :html => {:multipart => true} do |f|  %>
      <p>     :</p>
      <%= f.file_field :image%>
      <%= f.submit '  ' %>
  <% end %>
</div>

 (6)view/imageshow_view.html.erb 에 쓰 기:
<div style="margin: 100px 80px 100px 500px">
 <%= image_tag @image_news.image.url%>
</div>

    
    (7)ImageMagick 설치(Mac OS X 10.8.5) 설치 가 성공 적 이 고 편리 하지만 먼저 xcode 를 설치 해 야 합 니 다.
curl -O ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar -zxf ImageMagick.tar.gz
cd ImageMagick-*/
./configure --prefix=/opt/local
make
sudo make install

    홈 브 루 로 도 설치 할 수 있다.  
 
    참고:http://yuan.iteye.com/blog/604174
              http://huacnlee.com/blog/rails-plugin-paperclip-for-image-upload/
              http://railscasts.com/episodes/134-paperclip
              http://elf8848.iteye.com/blog/455675
              
   
 
 
 

좋은 웹페이지 즐겨찾기