我是新來的鐵軌,所以很抱歉,如果這很容易。我想知道上傳圖片並將其顯示在Ruby on Rails中的最佳方式。我有一個博客,並希望在創建帖子時可以選擇添加圖片。上傳圖片Ruby on Rails
回答
回形針非常棒。有一個關於它的優秀RailsCast - http://railscasts.com/episodes/134-paperclip
很多人推薦PaperClip。也許你想先嚐試一下。
假設你不需要花哨的功能,不希望添加的依賴,並希望將圖像存儲爲你的數據庫BLOB的,你可以這樣做:
型號:
class Image < ActiveRecord::Base
def img=(input_data)
self.filename = input_data.original_filename
self.filetype = input_data.content_type.chomp
self.img = input_data.read
end
end
控制器:
class ImagesController < ApplicationController
def display_img
@img = Image.find(params[:id])
send_data(@img.img, :type => @img.filetype, :filename => @img.filename,
:disposition => 'inline')
end
end
Here's a link一個更完整的教程。
attachment_fu(http://github.com/technoweenie/attachment_fu
)是另一種選擇,雖然我個人會推薦paperclip。它不需要Rmagick這是一個很大的優勢,它支持一些很酷的功能,例如通過較小的配置上傳到S3。
CarrierWave是比Paperclip更新的寶石,它看起來更加靈活。 還有一個關於它的Railscast:http://railscasts.com/episodes/253-carrierwave-file-uploads
CarrierWave可能是在Rails中上傳圖片的最佳解決方案。 以下文章描述了使用CarrierWave進行圖像上傳的解決方案,而圖像轉換是在雲中無縫完成的。上傳的圖像存儲在雲中並通過CDN傳送。 無需安裝RMagick,MiniMagick和ImageMagick。 http://cloudinary.com/blog/ruby_on_rails_image_uploads_with_carrierwave_and_cloudinary
很多人推薦使用Carrierwave
,我不是例外,但我想指出一件事。在許多使用RoR編寫的站點上(顯然,不僅僅是RoR問題),我注意到發送圖片的請求可能會等待2-3秒,而且通常甚至更多,這將綁定應用程序實例(這可能並不可怕如果你使用線程或不關心性能,但它絕對是如果你使用獨角獸)。所以,我將解釋如何避免使用carrierwave:
1)挑選一些背景工人爲您的應用程序(我一般用Sidekiq去)
2)添加carrierwave_backgrounder
到你的Gemfile並配置它一起工作的背景工人和carrierwave(其自述一切)
我平時都在我的控制目錄,所以我用的carrierwave_backgrounder
處理並存儲在文件系統或S3或圖片store_in_background
選項無論你使用
3)現在,當喲ü更新圖片,其處理和存儲轉到背景,這會釋放您的應用程序實例,但需要一段時間,大多數情況下需要超過1秒鐘,並且您需要向用戶返回一些響應
4)最簡單爲用戶提供一些響應的方式是返回JavaScript,其中您將舊圖片更改爲帶有微調框或類似物的gif,並設置javascript SetInterval
函數,用於檢查圖片是否已處理(carrierwave_background
提供了可以更改處理完成後,將模型的布爾列設置爲true)每2秒發送一次AJAX
請求或您喜歡的任何內容,並在處理完成後更改圖片。
現在你有一個解開的應用程序實例和一個良好的用戶體驗在同一時間。
PS我是新來的導軌和web開發本身所以這個指南可能有一些注意事項,我已經錯過
希望這會幫助別人。
哦,順便說一句,這是一個叫做refile
的新寶石,它很棒,在某些情況下可以是一個非常好的選擇。
- 1. Ruby on Rails - 圖片上傳
- 2. Ruby on Rails,Formtastic Gem圖片上傳
- 3. Ruby on Rails的照片上傳問題
- 4. Ruby on Rails圖片展示
- 5. 使用Ruby on Rails在twitter上上傳多張圖片Twitter Gem
- 6. Ruby on rails文件上傳
- 7. ruby on rails bootsy圖片上傳不起作用
- 8. Ruby on rails bootsy + cloudinary上傳圖片麻煩
- 9. Ruby on Rails - Carrierwave,無法上傳多張圖片
- 10. Ruby on Rails的:問題得到CKEDITOR上傳圖片
- 11. Ruby on Rails:從移動設備上傳圖片
- 12. 編碼器與Ruby on Rails和上傳
- 13. CSV文件上傳取消Ruby on Rails
- 14. Ruby on Rails Carrierwave - 上傳'nobody'的文件
- 15. 在Ruby on Rails中上傳文件
- 16. Ruby on Rails的AJAX文件上傳
- 17. Ruby on Rails視圖
- 18. Ruby on Rails圖形
- 19. Ruby on Rails - 傳遞哈希
- 20. 用假數據生成回形針圖片上傳 - Ruby on Rails Populator/Faker Gems
- 21. Ruby on Rails中的照片站點 - 如何通過管理員上傳照片?
- 22. 在Ruby on Rails上壓縮圖像4
- 23. Ruby on Rails:鏈接到佈局中的用戶上傳圖像
- 24. Ruby-On-Rails如何顯示用戶上傳的圖像
- 25. API圖像文件上傳iPhone到Ruby on Rails
- 26. CMS on Ruby on Rails
- 27. Ruby On Rails上的MySQL Gem
- 28. Ruby on Rails上刮屏
- 29. 在Ruby on Rails上捲曲
- 30. Azure上的Ruby on Rails
避免在數據庫中存儲大量的斑點 - 很少有這樣的情況,這是一個好主意。 – bensie