अपलोड करने के लिए कुछ भी नहीं, मुझे संदेह है कि समस्या पॉलीमोर्फिक छवि विशेषता बनाने के तरीके में है। मैं फॉर्म में fields_for
का उपयोग कर रहा हूं। इस मामले में कोई उपयोगकर्ता एक पोस्ट बना सकता है और पेपरक्लिप का उपयोग करके एक छवि जोड़ सकता है, इसे S3 के साथ संग्रहीत कर सकता है।रेल 3 को कॉन्फ़िगर करना + पॉलिमॉर्फिक छवि मॉडल + पेपरक्लिप और अमेज़ॅन एस 3, कोई त्रुटि नहीं, लेकिन
class PostImage < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
#.merge(PAPERCLIP_OPS)
has_attached_file :image, :styles => { :medium => "200x200>", :thumb => "50x50>" },
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => "/:style/:id/:filename",
:bucket => "zounds-dev"
validates_attachment_presence :image
validates_attachment_size :image, :less_than => 5.megabytes
end
पोस्ट मॉडल::
class Post < ActiveRecord::Base
has_many :post_images, :as => :imageable, :dependent => :destroy
.
.
.
accepts_nested_attributes_for :post_images, :reject_if => lambda { |t| t[:post_image].nil?}, :allow_destroy => true
end
नई पोस्ट प्रपत्र:
=form_for(setup_post(@post,current_user), :html => { :multipart => true}) do |f|
%dl
=f.fields_for :post_images do |ff|
=ff.file_field :image
%dt.field=f.label :name
%dd.field=f.text_field :name
%dt.field=f.label :description
%dd.field=f.text_area :description
=f.fields_for :user do |u|
=render "user_fields", :f => u
=f.fields_for :assignments do |ff|
=ff.check_box :_destroy, {:checked => ff.object.persisted?}, '0','1'
=ff.label :_destroy, ff.object.group.name
=ff.hidden_field :group_id
.action=f.submit "Save Post"
setup_post
मैं एक बहुरूपी छवि मॉडल "post_image" उपयोग कर रहा हूँ सहायक विधि पोस्ट form_for
में इस्तेमाल किया: (समूह सामग्री यहां प्रासंगिक नहीं है)
def setup_post(post, current_user)
groups = current_user.groups_as_owner + current_user.groups_as_member
(groups - post.groups).each do |group|
post.assignments.build(:group => group)
end
post.assignments.sort_by {|x| x.group.name }
post_image = post.post_images.build
post
end
पोस्ट नियंत्रक:
def new
@user = User.find(params[:user_id])
# @post = @user.posts.build
@post = Post.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @post }
end
end
def create
@user = current_user
@post = @user.posts.build(params[:post])
.
.
.
end
मुझे लगता है समस्या यह है कि मैं के लिए fields_for
का उपयोग कर रहा है post_image विशेषता, लेकिन मैंने पूरी तरह से देखा है और यह पता नहीं लगा सकता कि पॉलिमॉर्फिक नेस्टेड छवि विशेषता को लागू करने का उचित तरीका क्या है।
मैंने s3sh
अमेज़ॅन एस 3 कंसोल चीज भी की, और हालांकि मैं एक छवि अपलोड नहीं कर सका क्योंकि मुझे पता नहीं चला कि खुले() फ़ंक्शन के दाहिनी छवि पथ में कैसे पास किया जाए, मैं S3 से कनेक्ट हुआ। मेरी s3.yml
फ़ाइल भी सही ढंग से सेट की गई है।
धन्यवाद yall, ब्रायन
अच्छा एक। धन्यवाद दोस्त :) –
बस अगर कोई इसे पढ़ता है: केवल इस पृष्ठ को हटाएं: अस्वीकरण_फ => lambda {| t | टी [: post_image] .nil?} आप छोड़ सकते हैं: allow_destroy => सत्य अगर आप चाहते हैं कि छवि रिकॉर्ड हटा दिया जाए। –