iT邦幫忙

DAY 26
0

從想法到快速實作的捷徑:Rails系列 第 26

[ Day 26 ][ Dev ] 上傳圖片 - Carrierwave

  • 分享至 

  • twitterImage
  •  

先安裝今天會用到的兩個gem。

gem "rmagick", :require => 'RMagick' 
gem "carrierwave"

(不加require會有bug)

上傳圖片


  rails g uploader image
  rails g migration add_image_to_posts image:string

在post.rb裡面加入:

mount_uploader :image, ImageUploader

再來就是在post controller的strong parameter加入image。

如此就完成上傳圖片功能了。

要把圖片拿出來的話只要對著圖片呼叫"post.image_url",

就可以了(這裡圖片命名為image,如果是photo的話可以用photo_url來拿到)

<%= image_tag @post.image_url %>

而用直接丟網址來抓圖片也可以,carrierwave已經內建了helper來做這件事情,

只要名字的格式對了,我們就能輕鬆的貼上網址上傳圖片,

不需要再做其他額外的設定。

<%= f.input :remote_image_url, label: "或是圖片網址" %>

(這裡記得也要加入strong parameter)

但是問題就來了,現在上傳圖片的大小都是圖片原始的大小,

有沒有辦法能管理圖片的size呢?

(這裡可以直接從image_tag裡面去改,不過下面要介紹更好的方法)

#管理上傳的圖片 - rmagic

現在只要設定大小,不需要動到其他東西,

先到剛剛generate的ImageUploader裡面解開rmagic的comment,

再加上新的version設定

include CarrierWave::RMagick

version :display do
  process :resize_to_limit => [400, 400]
end

接著只要在剛剛的image_url加入對應的version就可以了。

image_tag @post.image_url(:display)

參考資料:

http://rubydoc.info/gems/carrierwave/frames


上一篇
[ Day 25 ][ Dev ] 實作角色權限管理 - Part 3
下一篇
[ Day 27 ][ Dev ] 簡單的支援Markdown
系列文
從想法到快速實作的捷徑:Rails30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言