2011-04-25 17 views
5

अपलोड करें मेरे पास पेपरक्लिप का उपयोग करके दो अलग-अलग ऐप्स हैं।अनुलग्नक अपलोड करते समय पेपरक्लिप को नहीं बुलाया जाता है, इसलिए अनुलग्नक सहेजा नहीं जाता है। Rails3 +

Started POST "/uploads" for 127.0.0.1 at Mon Apr 25 11:35:50 +0100 2011 
Processing by UploadsController#create as JSON 
Parameters: {"_http_accept"=>"application/javascript", "Filename"=>"angels.txt", "folder"=>"https://stackoverflow.com/users/", "authenticity_token"=>"NVJj3ODIGuoc97wGvjWkez1YoN+SUDVtNJ+k80XdYXM=", "Upload"=>"Submit Query", "user_id"=>"1", "_uploadify_session"=>"BAh7ByIQX2NzcmZfdG9rZW4iMU5WSmozT0RJR3VvYzk3d0d2aldrZXoxWW9OK1NVRFZ0TkorazgwWGRZWE09Ig9zZXNzaW9uX2lkIiU0ZDEyNzZkNzczNzk1MDdiMmQ4NWZmYTY5MDY4YTU0MQ==--7eb8c0ca249e2566998a0e68322a89d731fdb4ad", "Filedata"=>#<ActionDispatch::Http::UploadedFile:0x4958490 @content_type="application/octet-stream", @original_filename="angels.txt", @tempfile=#<File:C:/DOCUME~1/Ed/LOCALS~1/Temp/RackMultipart20110425-4884-vyvdo8-0>, @headers="Content-Disposition: form-data; name=\"Filedata\"; filename=\"angels.txt\"\r\nContent-Type: application/octet-stream\r\n">} 
[paperclip] identify -format %wx%h "C:/DOCUME~1/Ed/LOCALS~1 /Temp/stream20110425-4884-15he32x-0.txt[0]" 2>NUL 
[paperclip] convert "C:/DOCUME~1/Ed/LOCALS~1/Temp/stream20110425-4884-15he32x-0.txt[0]" -resize "300x300>" "C:/DOCUME~1/Ed/LOCALS~1/Temp/stream20110425-4884-15he32x-020110425-4884-r65fe6-0" 2>NUL 
[paperclip] identify -format %wx%h "C:/DOCUME~1/Ed/LOCALS~1/Temp/stream20110425-4884-15he32x-0.txt[0]" 2>NUL 
[paperclip] convert "C:/DOCUME~1/Ed/LOCALS~1/Temp/stream20110425-4884-15he32x-0.txt[0]" -resize "100x100>" "C:/DOCUME~1/Ed/LOCALS~1/Temp/stream20110425-4884-15he32x-020110425-4884-1ttxfol-0" 2>NUL 
[1m[36mAREL (15.6ms)[0m [1mINSERT INTO "uploads" ("user_id", "created_at", "photo_file_size", "photo_updated_at", "photo_content_type", "photo_file_name", "updated_at") VALUES (1, '2011-04-25 10:36:10.312500', 867, '2011-04-25 10:35:52.109375', 'text/plain', 'angels.txt', '2011-04-25 10:36:10.312500')[0m 
[paperclip] Saving attachments. 
[paperclip] saving C:/rails_project1/Uploadify-2/public/system/photos/2/medium/angels.txt 
[paperclip] saving C:/rails_project1/Uploadify-2/public/system/photos/2/thumb/angels.txt 
[paperclip] saving C:/rails_project1/Uploadify-2/public/system/photos/2/original/angels.txt 
Completed 200 OK in 19422ms (Views: 62.5ms | ActiveRecord: 15.6ms) 

केवल: एप्लिकेशन कि लगाव को बचाने या फोन नहीं करता है पेपरक्लिप पर, मैं इस लॉग जब मैं किसी ऐप

started POST "https://stackoverflow.com/users/1/uploads" for 127.0.0.1 at 2011-04-23 13:38:11 +0100 
Processing by UploadsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"t2dRIH4FgOPnLRhpDK0x7iIfjB9Xj5rqkJRPCWZvJ14=", "upload"=> {"document"=>#<ActionDispatch::Http::UploadedFile:0x2beeb08 @original_filename="Essay questions have various requirements.doc", @content_type="application/msword", @headers="Content-Disposition: form-data; name=\"upload[document]\"; filename=\"Essay questions have various requirements.doc\"\r\nContent-Type: application/msword\r\n", @tempfile=#<File:C:/DOCUME~1/Ed/LOCALS~1/Temp/RackMultipart20110423-3980-ycq74p>>}, "commit"=>"Upload", "user_id"=>"1"} 
[1m[35mUser Load (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 
[1m[36mUpload Load (0.0ms)[0m [1mSELECT "uploads".* FROM "uploads" WHERE ("uploads".uploadable_id = 1 AND "uploads".uploadable_type = 'User')[0m 
Rendered uploads/_uploadify.html.erb (15.6ms) 
Rendered uploads/_form.html.erb (31.2ms) 
Rendered uploads/new.html.erb within layouts/application (46.9ms) 
Completed 200 OK in 500ms (Views: 234.4ms | ActiveRecord: 0.0ms) 

एप्लिकेशन जहां पेपरक्लिप ठीक काम करता है पर अपलोड मिलता है, मैं इस लॉग मिल

class UploadsController < ApplicationController 
    before_filter :find_parent 
    before_filter :prepare_input_params 
    #respond_to :html, :json, :js 

    def index 
    @uploads = Upload.all 
#@uploads = @parent.try(:uploads).try(:all) 
@upload = Upload.new 
    #respond_with([@parent, @uploads]) 
    end 

    def new 
    @upload = @parent.uploads.new 
    end 

    def create 
    @upload = @parent.uploads.build(params[:upload]) 
    if @upload.save 
     flash[:notice] = "sucessfully saved upload"  
    respond_to do |format| 
     format.html {redirect_to [@parent, :uploads]} 
     format.json {render :json => { :result => 'success', :upload => polymorphic_url([@parent,:uploads]) } } 
     end 
    else 
     render :action => 'new' 
     end 
end 

def edit 
    @upload = Upload.find(params[:id]) 
end 

def show 
    "puts @upload.inspect" 
    @upload = @parent.uploads.find(params[:id]) 
    @total_uploads = @parent.uploads.find(:all, :conditions => { :user_id => @upload.user.id}) 
end 

def update 
    @upload = Upload.find(params[:id]) 
    if @upload.update_attributes(params[:upload]) 
    flash[:notice] = "Successfully updated document" 
    redirect_to @upload 
    else 
    render :action => 'edit' 
    end 
end 

def destroy 
    @upload = Upload.find(params[:id]) 
    @upload.destroy 
    redirect_to([@parent, :upload]) 
end 

private 
def prepare_input_params 
    params[:upload][:document] = params[:Filedata] if params[:Filedata] 
end 

अंत

: दोनों के बीच अंतर यह है कि एक काम नहीं कर रहा बहुरूपी मॉडल है और बहुरूपी मॉडल के लिए नियंत्रक से नीचे है 0

यहां आंशिक रूप से आंशिक और अपलोड बिट के साथ जिस्ट फ़ाइल है: https://gist.github.com/940960। फ़ॉर्म में है: html => {: multipart => true}।

सहायता के लिए धन्यवाद।

संपादित:

ऐसा लगता है समस्या मॉडल, uploads.rb से है। जब मैं नीचे दिए गए अनुभाग पर टिप्पणी करता हूं: सबकुछ काम करता है, लेकिन मुझे सत्यापन का उपयोग करने और पथ निर्दिष्ट करने की आवश्यकता है क्योंकि मैं S3 का उपयोग करना चाहता हूं। पेपरक्लिप की प्रारंभिक त्रुटि के बिना मैं कोड को असम्बद्ध कैसे कर सकता हूं इस पर कोई भी नहीं।

class Upload < ActiveRecord::Base 
attr_accessible :document 
belongs_to :uploadable, :polymorphic => true 
has_attached_file :document, :styles => { :small => "150x150>",:thumb => "100x100>" } 
=begin     
      :url => "/uploads/:id/:style/:basename.:extension", 
      :path => ":rails.root/public/:uploads/:id/:style/:basement.:extension"         
validates_attachment_presence :document 
validates_attachment_size :document, :less_than => 5.megabytes 
validates_attachment_content_type :document, :content_type => ['application/octet-stream','image/jpeg','image/gif', 'image/png', 'image/pdf', 'image/doc', 
                  'video/x-m4v', 'video/quicktime','application/x-shockwave-flash', 'audio/mpeg', 'video/mpeg', 'application/pdf','application/msword'] 

=end 

अंत

अद्यतन:

मुझे लगता है कि मुख्य समस्या यह है कि क्यों एक नई फ़ाइल संलग्न, पेपर क्लिप, किसी भी तरह चुनें "अपलोड" बुला शुरू होता है होने लगते हैं * 'से "। को कॉल करने के बजाय अपलोड करें, नियंत्रक # कार्रवाई दिखाया गया है कि उच्चतर लगता है कि जब भी मैं प्रदान करता हूं, तो यूआरएल और : paperclip है_attached_file विधि के लिए पथ विकल्प। नीचे लॉग देखें:

<%= debug @parent %> 
<%= render :partial => "uploads/uploadify" %> 
</br> 
<%= form_for [parent, upload], :html => { :multipart => true } do |f| %> 
<div class="field"> 
<%= f.label :document %><br /> 
<%= f.file_field :document %> 
</div> 

<div class="actions"> 
<%= f.submit "Upload"%> 
</div> 

विचारों/अपलोड/new.html:

Processing by UploadsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Azxzi09R7NU7+jxj+lxHFGfs+qw7D6b7yRKegRjRQMc=", "upload"=> {"document"=>#<ActionDispatch::Http::UploadedFile:0x2994ff0 @original_filename="al night verses.txt", @content_type="text/plain", @headers="Content-Disposition: form-data; name=\"upload[document]\"; filename=\"al night verses.txt\"\r\nContent-Type: text/plain\r\n", @tempfile=#<File:C:/DOCUME~1/Ed/LOCALS~1 /Temp/RackMultipart20110505-3444-1rlpnr>>}, "commit"=>"Upload", "user_id"=>"1"} 
[1m[35mUser Load (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 
[paperclip] C:\ImageMagick-6.6.3-Q16/identify -format %wx%h "C:/DOCUME~1/Ed/LOCALS~1 /Temp/stream20110505-3444-1cpnf87.txt[0]" 
[paperclip] C:\ImageMagick-6.6.3-Q16/convert "C:/DOCUME~1/Ed/LOCALS~1 /Temp/stream20110505-3444-1cpnf87.txt[0]" -resize "150x150>" "C:/DOCUME~1/Ed/LOCALS~1 /Temp/stream20110505-3444-1cpnf8720110505-3444-1vnp5jx" 
[paperclip] C:\ImageMagick-6.6.3-Q16/identify -format %wx%h "C:/DOCUME~1/Ed/LOCALS~1 /Temp/stream20110505-3444-1cpnf87.txt[0]" 
[paperclip] C:\ImageMagick-6.6.3-Q16/convert "C:/DOCUME~1/Ed/LOCALS~1 /Temp/stream20110505-3444-1cpnf87.txt[0]" -resize "100x100>" "C:/DOCUME~1/Ed/LOCALS~1 /Temp/stream20110505-3444-1cpnf8720110505-3444-1vyk9i" 
[1m[36mUpload Load (0.0ms)[0m [1mSELECT "uploads".* FROM "uploads" WHERE ("uploads".uploadable_id = 1 AND "uploads".uploadable_type = 'User')[0m 
Rendered uploads/_uploadify.html.erb (15.6ms) 
Rendered uploads/_form.html.erb (31.2ms) 
Rendered uploads/new.html.erb within layouts/application (62.5ms) 

@ CharlieMezak के अनुरोध के आधार पर, यहां विचारों/अपलोड/_form.html.erb है .erb:

<%= render 'form', :parent => @parent, :upload => @upload %> 

विचारों/उपयोगकर्ताओं/सूचकांक। एचटीएमएल।ERB:

<%= render "uploads/form", :parent => user, :upload => user.uploads.new %> 

अधिक अद्यतन:

की तरह मैं उल्लेख किया है, जब मैं बाहर टिप्पणी : शैलियों,: यूआरएल और: पथ पेपर क्लिप से विकल्पों ** 'has_many_attachment: दस्तावेज़', INSERT कथन को बुलाया जाता है और हालांकि यह संलग्न फ़ाइल को प्रदर्शित करने के बजाय फ़ाइल को सहेजता है, यह वेबसाइट पर प्रामाणिकता टोकन इत्यादि जैसे कई पैरामीटर प्रदर्शित करता है जैसा कि नीचे दिखाया गया है:

attributes: 
id: 1 
email: [email protected] 
encrypted_password: $2a$10$HiksbkRXDtcXiJyUIRj 
password_salt: $2a$10$HiksbkRXD 
reset_password_token: !!null 
remember_token: !!null 
remember_created_at: !!null 
sign_in_count: 3 
current_sign_in_at: '2011-04-25 18:57:27.078125' 
last_sign_in_at: '2011-04-25 09:25:31.406250' 
current_sign_in_ip: 127.0.0.1 
last_sign_in_ip: 127.0.0.1 
created_at: '2011-04-09 17:46:15.546875' 
updated_at: '2011-04-25 18:57:27.078125' 
changed_attributes: {} 
previously_changed: {} 
attributes_cache: {} 
marked_for_destruction: false 
destroyed: false 
readonly: false 
new_record: false 
+0

हम वास्तव में आपके प्रपत्र कोड देख सकते हैं? – CharlieMezak

+0

क्या ऑथ टोकन सत्यापित करने के लिए उपयोगकर्ता जानकारी को पकड़ने के लिए 'SELECT' कथन नहीं है? –

+0

@CharlieMezak, इस प्रश्न पर एक बक्षीस रखने के लिए धन्यवाद। फॉर्म आंशिक और अन्य दृश्य फाइलें संलग्न हैं। – brg

उत्तर

1

क्या आपको अपने विचार में फॉर्म टैग में :multipart => true जोड़ना याद था?

+0

धन्यवाद लेकिन हाँ मैंने जोड़ा: multipart => फ़ॉर्म के लिए सही है। – brg

+1

हां मैं वही बात सुझा रहा था। कि एक बार मुझे एक से अधिक मिल गया है! –

0

attr_accessible कॉल में document_file_name जोड़ने का प्रयास करें।

+0

धन्यवाद लेकिन attr_accessible कॉल में document_file_name जोड़ने के बाद, यह अभी भी ठीक से काम नहीं करेगा जब तक कि मैं 'has_attached_file: दस्तावेज़' अनुभाग और सत्यापन को टिप्पणी नहीं करता। – brg

+0

ओह ठीक है, बस एक विचार है। जब मेरे पास नहीं था, तो मुझे एक मुश्किल बग था: दस्तावेज़ को attr_accessible के रूप में। –

+0

सभी उपनाम धन्यवाद। सुझावों के लिए – brg

0

एक बात मैंने देखा है कि आपके गिस्ट में अपलोड करने की लाइन 17 पर एक टाइपो है। आपके पास dat.upload है, शायद डेटा होना चाहिए। अपलोड करें?

इसके अलावा, क्या आपने एक समय में मान्यताओं को एकजुट करने का प्रयास किया है? मुझे बताएं कि क्या हेाता है। मेरे पास पेपरक्लिप बनाम लड़ाइयों का मेरा उचित हिस्सा रहा है।

+0

धन्यवाद। मैंने वर्तनी को सही किया है और मान्यताओं की जांच की है जो अभी ठीक लगती हैं, लेकिन अगर 'has_attached_file: दस्तावेज़' में कोई विकल्प है तो अनुलग्नक अभी भी काम नहीं करेंगे। अतिरिक्त मैं दो रूटिंग त्रुटियों को देखता हूं। एक ऐसा होता है जब पेपरक्लिप 'INSERT' के बजाय 'SELECT' कहता है और दूसरी बार जब मैं लोकलहोस्ट कहता हूं: 3000/उपयोगकर्ता/1/अपलोड, इसके बजाय यह अपलोड/index.html.erb को कॉल करता है। धन्यवाद फिर से – brg

0

मैं वैसे ही वही काम कर रहा हूं जैसा आप हैं, लेकिन aws-s3 मणि का उपयोग करके मुझे पेपरक्लिप के माध्यम से S3 पर अपलोड करने में मदद करने के लिए। यह वही है अपने मॉडल में है:

has_attached_file :image, 
       :storage => :s3, 
       :s3_credentials => "#{Rails.root.to_s}/config/s3.yml", 
       :bucket => "your_s3_bucket_name", 
       :path => ":attachment/:id/:style/:filename" 

और मैं अपने gemfile में यह है:

gem "paperclip", "~> 2.3" 

gem "aws-s3" 

और मेरे समूह तालिका में:

t.string "image_file_name" 
t.string "image_content_type" 
t.integer "image_file_size" 
t.datetime "image_updated_at" 
+0

धन्यवाद। क्या आप usinh ** has_attached_file का सुझाव दे रहे हैं: दस्तावेज़ '। मैं भाग गया ** रेल पेपरक्लिप अपलोड दस्तावेज़ ** ** रेल के बजाय पेपरक्लिप अपलोड छवि ** उत्पन्न करते हैं। क्या आपको लगता है कि ** दस्तावेज़ ** रेल में एक आरक्षित शब्द है। एक बार फिर धन्यवाद। – brg