سؤال

لقد ضربت حقا جدارا وأحتاج إلى بعض المساعدة! شكرا لقراءة هذا بعيدا!

أنا في منتصف كتابة التطبيق الذي يتحدث إلى خادم Ror الخاص بي لطلبات قاعدة البيانات ويعمل بفضل activeresource. لكنني الآن بحاجة أيضا إلى تحميل الملفات إلى الخادم، وأخطط لاستخدام Asihttprequest الذي يبدو رائعا، مشكلتي رغم أنني لست متأكدا من كيفية تسليم طلب المشاركة على جانب ROR ... أنا أستخدم PaperClip ولكن ضربت حقا جدار من الطوب.

على جانب Asihttp، أنا ببساطة كتابة:

[request setData:data withFileName:@"photo.jpg" andContentType:@"image/jpeg" forKey:@"asset[image]"];

وعلى جانب روبي أفعل ...

class Asset < ActiveRecord::Base
   validates_attachment_presence :image
    has_attached_file :image
end

class AssetsController < ApplicationController  
    protect_from_forgery :only => [:update, :destroy] 
.....

لكنه دائما يفشل، أنا متأكد من أنه حصلت على شيء ما له علاقة بمجموعة بيانات ما بعد النموذج، لكنني عالق تماما.

أحصل على الخطأ:

 Parameters: {"assets"=>{"images"=>#<File:/var/folders/gM/gM15qjM2G3W0iVNaT1evD++++TI/-Tmp-/RackMultipart20091112-2285-2i0qq5-0>}}

NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]):
  app/models/asset.rb:2
  app/controllers/assets_controller.rb:46:in

"خلق"

أي مساعدة ستكون مستلمة للغاية بامتنان.

كريس

شكرا!

هل كانت مفيدة؟

المحلول

أول شيء كنت أتحقق من القيام به هو إعداد اسم المعلمة إلى ما file_column (أو أيا كان، شخصيا كنت أستخدم paperclip).

إذا كان لديك شيء مثل:

class Entry < ActiveRecord::Base
    file_column :image
end

ستحتاج إلى التأكد من أن المعلمة (اسم حقل النموذج) يتوافق مع ما هو متوقع. للمثال أعلاه هذا سيكون:

name="entry[image]"

أيضا، تأكد من أنك تقوم بعمل نموذج متعدد الأقليص، وليس فقط المعيار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top