سؤال

ولدي هذه الكتلة من التعليمات البرمجية:

users = Array.new
users << User.find(:all, :conditions => ["email like ?", "%foo%"])
users << User.find(:all, :conditions => ["name like ?", "%bar%"])
users.flatten!
users.uniq!
puts users.to_json :include => [:licenses]

وعندما تشغيله باستخدام النصي / وحدة التحكم، فإنه يعود بالضبط ما كنت أعتقد أنه ينبغي، تمثيل JSON من صفيف من المستخدمين أن وجدت، بالارض، وuniquified. ولكن تعمل في نفس سطر من التعليمات البرمجية كجزء من أسلوب search_for_users، أحصل على هذا الخطأ

<اقتباس فقرة>   

وTypeError في ControllerName # search_for_users
  خطأ نوع الوسيطة التجزئة (المتوقع البيانات)

ووالخط المشار إليه هو خط مع الدعوة .to_json.

وانها المحير لي لأن متاحة حرفيا نفسه. والفرق الوحيد هو أنه عندما أنا على التوالي في وحدة تحكم، وأنا دخول الظروف يدويا، ولكن في طريقة بلدي، وأنا سحب الاستعلام من params[:query]. ولكن، أنا فقط حاولت hardcoding الاستعلامات وحصلت على نفس النتيجة، لذلك لا أعتقد أن هذه هي المشكلة. إذا كنت إزالة :include، وأنا لا أرى خطأ، لكنني أيضا لا تحصل على البيانات أريد.

وأي شخص لديه أي فكرة عما قد تكون القضية؟

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

المحلول

وهناك عدد قليل من الإضافات والأحجار الكريمة التي يمكن أن تسبب .to_json أن تفشل إذا شملت في وحدة التحكم الخاصة بك. وأعتقد أن الأحجار الكريمة تويتر هو واحد منهم (واجهت مشكلة مع هذا لحظة العودة).

هل لديك "تشمل [أي شيء]" أو "يتطلب [أي شيء]" في وحدة التحكم هذه؟

إذا لم يكن كذلك، فإنني أقترح إزالة مؤقتا أي الإضافات كنت تستخدم لاستكشاف، وما إلى ذلك.

وأخيرا، ماذا يحدث إذا قمت باستبدال هذا الإجراء تحكم كامل مع ببساطة: ٪ ث (1 2 3 4 5) .to_json

وهذا ينبغي أن تساعدك أحدد ما هو الفشل.

نصائح أخرى

وكلما التعليمات البرمجية في الاختبارات أو وحدة يتصرف مختلفة من بيئة الإنتاج (والذي هو تخمين ... قد تكون قيد التشغيل موقعك في نمط التنمية)، وهذا يدعو إلى مسألة ترتيب التحميل. في بيئة الإنتاج، ومسبقة جميع النماذج والتحكم في بيئات أخرى يتم تحميلها بتكاسل عند الحاجة. بدء حدة التحكم الخاصة بك مع RAILS_ENV=production ./script/console ومعرفة ما إذا كان يمكنك إعادة الخطأ بهذه الطريقة. كما ذكر cscotta، وهناك زوجين من الأحجار الكريمة والمكتبة، التي يمكن أن تتداخل مع .to_json، الأول أن أذكر وظيفة، التي تحصل عند تتطلب "سلمان". ركضت شخصيا في العديد من القضايا مع ذلك.

ويساعد هذا الأمل

وسيب

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