2011-08-16 33 views
40

Tôi sử dụng Quản trị viên hoạt động làm phụ trợ ứng dụng đường ray của mình. Tôi muốn thực hiện tải lên tệp. Làm thế nào tôi có thể thực hiện chức năng này?Tải lên tệp bằng Đường dẫn Activeadmin bằng kẹp giấy

+0

Tôi chưa bao giờ sử dụng tích cực quản lý cụ thể, nhưng viên ngọc Kẹp giấy giúp bạn dễ dàng tải lên tệp và đính kèm chúng vào bất kỳ mô hình nào. https://github.com/thoughtbot/paperclip – airlok

Trả lời

74

Tôi đã tìm thấy cách sử dụng Kẹp giấy với Quản trị viên đang hoạt động.

tôi đã thêm mã này trong mô hình của tôi "Sự kiện":

has_attached_file :map, :styles => { :medium => "238x238>", 
            :thumb => "100x100>" 
           } 

Và tôi đã làm điều này cho mô hình quản trị của tôi:

ActiveAdmin.register Event do 
form :html => { :enctype => "multipart/form-data" } do |f| 
    f.inputs "Details" do 
    f.input :continent 
    f.input :event_type 
    f.input :name 
    f.input :title 
    f.input :content 
    f.input :date_start, :as => :date 
    f.input :date_end, :as => :date 
    f.input :place 
    f.input :map, :as => :file 
    f.input :image, :as => :file, :hint => f.template.image_tag(f.object.image.url(:medium)) 
    f.input :userfull_info 
    f.input :price 
    f.input :phone, :as => :phone 
    f.input :website, :as => :url 
    end 
    f.buttons 
end 
end 

Để sử dụng nó trên các trang chỉ mục, bạn phải sử dụng :

column "Image" do |event| 
    link_to(image_tag(event.image.url(:thumb), :height => '100'), admin_event_path(event)) 
    end 
    default_actions 
end 
+4

Bạn có thể sử dụng f.input: image,: hint => "hình ảnh hiện tại: # {f.template.image_tag (f.object.image.url (: thumb))} " – Nazar

+0

Điều này sẽ tải lên s3 theo mặc định bằng cách sử dụng kẹp giấy? – JehandadK

+2

Tôi đã phải sử dụng "f.actions", không phải "f.buttons" để làm việc này. – Joseph

6

tôi đang sử dụng đường ray 3.0.1 và đoạn mã sau

f.input :image, :hint => "current image: #{f.template.image_tag(f.object.image.url(:thumb))}" 

trả về một chuỗi. Sau khi tìm kiếm một giải pháp, tôi đã tìm thấy nó.

f.input :image, :hint => f.template.image_tag(f.object.image.url(:thumb)) 

Gửi trực tiếp đối tượng, sẽ trả về một hình ảnh để html

+2

Bạn có thể sử dụng dòng mã đầu tiên, chỉ cần gọi 'html_safe' trên chuỗi (sau dấu ngoặc kép). –

5

Trong phiên bản mới nhất của ActiveAdmin & Rails 4 để hiển thị trường Tệp chúng ta cần phải sử dụng mã dưới đây

Trước đây chúng tôi sử dụng f.input: cập nhật,: như =>: file

ActiveAdmin.register Project do 
    permit_params :name, :uploads 


    form multipart: true do |f| 
    f.inputs "Project Details" do 
     f.input :name 
     f.input :uploads, required: false 
    end 
    f.actions 
    end 

end 
13

Got nó làm việc cho Rails 4.1 và 4.1 Kẹp giấy:

Mẫu

class Hotel < ActiveRecord::Base 

has_attached_file :thumbnail, :styles => { :medium =>  "300x300#", :thumb => "200x200#" } 
validates_attachment :thumbnail, content_type: { content_type:  ["image/jpg", "image/jpeg", "image/png"] } 

end 

quản lý mẫu

ActiveAdmin.register Hotel do 

permit_params :name, :description, :price, :thumbnail 

form do |f| 
    f.inputs "Project Details" do 
    f.input :name 
    f.input :thumbnail, :required => false, :as => :file 
    # Will preview the image when the object is edited 
    end 
    f.actions 
end 

show do |ad| 
    attributes_table do 
    row :name 
    row :thumbnail do 
     image_tag(ad.thumbnail.url(:thumb)) 
    end 
    # Will display the image on show object page 
    end 
end 
end 
+0

Tôi đã nhận 'kẹp giấy NoHandlerError' và tôi đã phải' form: html => {: multipart => true} do | f | ' – givanse

+0

@givanse bạn phải làm' form: html ... 'ở đâu? – Aleks

Các vấn đề liên quan