貼code

2017年2月12日 星期日

將Carrierwave與Administrate 整合

    Carrierwave 是 Rails 裡常用的照片上傳的一個gem , 而Administrate是一個較新推出的admin管理gem 。今天要來記錄如何將Carrierwave當成一個Administrate的custom field

(關於Carrierwave的設定可參考 https://medium.com/@mauddev/rails-5-and-carrierwave-53960ec20c4b#.d9sdv7r1w)

再新增完一個uploader(假設叫ImageUplader),並在想加入照片的model(假設是Post)裡加入一個欄位(假設叫 :img, :string)之後,在administrate的post_dashboard裡
ATTRIBUTE_TYPE中加入
image: PostImageField
PostImageField可以自己換成其他名字,然後在其他地方加入image的這個欄位
再來終端機上輸入
rails generate administrate:field post_image
然後就會發現在controller/field 裡出現一個post_image_controller
在裡面新增一個method
  def to_s
    data.url
  end
接著,會在view/fields中看到三個partial ,_form代表在admin頁面中的編輯頁面如何顯示
所以將它改成可以吃一個檔案
<div class="field-unit__label">
  <%= f.label field.attribute %>
</div>
<div class="field-unit__field">
  <%= f.file_field field.attribute %>
</div>

然後_index 跟 _show裡加上
 
<%= image_tag field.to_s %>

這樣就行摟~
下次再更新如何加入thumb 跟 small的照片部分吧!!

參考資料:
https://administrate-prototype.herokuapp.com/adding_custom_field_types

沒有留言:

張貼留言