سؤال

إذا قمت بذلك:

curl -X POST -H 'Content-type: application/xml' -d '<person>...</person>' 'http://0.0.0.0:3000/people/12?_method=PUT'

أحصل على طلبات "فقط الحصول عليها ووضعها وحذفها". لماذا ا؟ القضبان 2.3.2.

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

المحلول 2

هذا هو في الواقع خلل في القضبان الإصدارات الأخيرة. الحل هو تمرير طريقة تجاوز طريقة HTTP مع وضع. هام: الاسم الكامل للرأس هو تجاوز HTTP-X-HTTP - تجاوز الأسلوب ولكن القضبان تضيف بادئة HTTP بحيث يمكنك تقليم هذا الجزء.

نصائح أخرى

لوكا صحيحة، تحتاج إلى إرسال رأس x-http-methode مع طلبك. وضع _method = وضعت في جون جون لا يعمل بالنسبة لي. سيبدو سطر أمر Curl الخاص بك مثل هذا:

 curl
  -H "X-Http-Method-Override: put"
  -H "Content-Type: application/json"
  -d "{\"user\":{\"email\":\"blah@example.com\"}}"
  www.site.com/users/username.json

هناك بضعة أشياء يمكن أن تخطئ.

أولا قبالة، أنت ترسل POST مع curl, ، ولكن لديك "السحر" _method المعلمة على عنوان URL الخاص بك، ويتم ضبطها على PUT. وبعد بناء على الخطأ، يبدو أن القضبان يأخذ POST كما نوع الطلب الموثوق. جربه دون ذلك ومعرفة ما يحدث.

في خطأ آخر للمشاة، التوجيه (في config/routes.rb يمكن تكوينها لعدم السماح POST طلبات الإجراء الذي تحاول استخدامه.

إذا كنت تستخدم وحدة تحكم مريحة قياسية، فإن هذا أمر جيد، لأنك توصل إلى عضو (/people/12) أيهما يسمح فقط GET, PUT, ، و DELETE.

سأحاول استخدام curl -X PUT وإسقاط ?_method=PUT من طلبك.

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