सवाल पेपरक्लिप का उपयोग कर Activeadmin रेल के साथ फ़ाइल अपलोड करें


मैं अपने रेल अनुप्रयोग बैकएंड के रूप में सक्रिय व्यवस्थापक का उपयोग करता हूं। मैं एक फाइल अपलोड करना चाहता हूँ। मैं इस कार्यक्षमता को कैसे पूरा कर सकता हूं?


40
2017-08-16 12:20


मूल


मैंने विशेष रूप से सक्रिय व्यवस्थापक का कभी भी उपयोग नहीं किया है, लेकिन पेपरक्लिप मणि आपको फ़ाइलों को आसानी से अपलोड करने और उन्हें किसी भी मॉडल से जोड़ने में मदद करता है। github.com/thoughtbot/paperclip - airlok


जवाब:


मुझे सक्रिय व्यवस्थापक के साथ पेपरक्लिप का उपयोग करने का एक तरीका मिला।

मैंने अपने मॉडल "इवेंट" में यह कोड जोड़ा:

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

और मैंने यह अपने व्यवस्थापक मॉडल के लिए किया था:

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

इंडेक्स पेज पर इसका इस्तेमाल करने के लिए, आपको इसका उपयोग करना होगा:

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

75
2017-08-17 07:42



आप f.input का उपयोग कर सकते हैं: छवि,: संकेत => "वर्तमान छवि: # {f.template.image_tag (f.object.image.url (: अंगूठे))}" - Nazar
क्या यह पेपरक्लिप का उपयोग करके डिफ़ॉल्ट रूप से s3 पर अपलोड होगा? - JehandadK
मुझे काम करने के लिए "f.buttons" नहीं, "f.buttons" का उपयोग करना पड़ा। - Joseph
यह बहुत अच्छा लगता है, लेकिन अगर आपने अभी इसे चुना है और अभी तक छवि अपलोड नहीं की है तो यह छवि का पूर्वावलोकन नहीं करता है। क्या इसे करने का कोई तरीका है? - Tiago


यह रेल 4.1 और पेपरक्लिप 4.1 के लिए काम किया है:

आदर्श

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

व्यवस्थापक मॉडल

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

13
2018-04-02 09:22



मुझे मिला paperclip NoHandlerError और मुझे करना था form :html => {:multipart => true} do |f| - givanse
@givanse आपको करना था form :html ... कहा पे? - Aleks


मैं रेल 3.0.1 और निम्न कोड का उपयोग कर रहा हूँ

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

एक स्ट्रिंग वापस करें। एक समाधान खोजने के बाद, मैंने पाया।

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

ऑब्जेक्ट को सीधे भेजें, एक छवि को एचटीएमएल पर वापस कर देगा


6
2017-12-04 00:42



आप कोड की पहली पंक्ति का उपयोग कर सकते हैं, बस कॉल करें html_safe स्ट्रिंग पर (डबल कोट्स के बाद)। - Brett Bender


फ़ाइल फ़ील्ड को प्रदर्शित करने के लिए ActiveAdmin और Rails 4 के नवीनतम संस्करण में हमें नीचे दिए गए कोड का उपयोग करने की आवश्यकता है

पहले हमने इस्तेमाल किया था f.input: अपलोड,: = => फ़ाइल

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

5
2018-03-21 10:16