سؤال

أحاول الوصول إلى مورد تطبيق Rails من واجهة برمجة التطبيقات (يرسل طلبًا/XML الحصول على طلب) وأود ألا أضطر إلى تحليل ملف XML.

في وحدة تحكم الموارد الخاصة بي ، لدي ما يلي:

def get_resource
    @my_resource = Resources.new
    render :xml => @my_resource
end

الذي ينتج ملف XML كما هو متوقع. إذا استبدلته بـ:

render :layout => false

تقارير API عن خطأ "قالب مفقود". لقد جربت أيضًا ما يلي:

render :xml => @identity, :layout => false

لكن الصفحة تقدم على أي حال. ما هي الطريقة الصحيحة للقيام بهذا؟

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

المحلول

عند تقديم: XML ، فإنه لا يستخدم تخطيطًا لأنه لا يستخدم أي قالب أيضًا. من خلال تحديد: تخطيط => خطأ ، فأنت تخبر القضبان بالبحث عن قالب غير موجود.

الآن ، إذا كنت لا ترغب في تحليل ملف XML ، فستواجه بعض البدائل. أيضاً:

render :json => @my_resource

أو

render :text => "My resource name is: #{@my_resource.name}" # Whatever you want

كل هذا يتوقف على الطريقة التي تريد أن تبدو بها النتيجة ، وما يتوقعه واجهة برمجة التطبيقات الخاصة بك. لذا ، إذا لم تجد أيًا من هذا المفيد ، فأعط مثالاً على كيفية رغبة الاستجابة.

نصائح أخرى

def get_resource
  @my_resource = Resources.new
  respond_to do |wants|
    wants.xml { render :xml => @my_resource }
    wants.html { render :layout => false }
  end
end

اقرأ هذه المقالة: http://tokumine.wordpress.com/2009/09/13/how-does-respond_to-work-in-the-rails-controllers/

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