سؤال

يقوم Rails 3 ببعض الأشياء الرائعة لجعل JavaScript غير مزعجة ، لذلك فعلوا أشياء مثل هذا:

= link_to "Logout", user_session_path, :method => :delete

..

<a href="/logout" data-method="delete" rel="nofollow">Logout</a>

لكن هذا حدث لي .. عندما أطفئ JavaScript ، لم تعد الطريقة حذفها ، فهي تحصل كما هو متوقع. لذلك هل هناك خطط ، أم أن هناك طريقة للسماح لها بذلك data- سمات للتدهور بأمان ، بحيث لا يزال هذا الرابط هو طلب حذف؟

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

المحلول

التغيير الذي قاموا به في القضبان 3 مع هؤلاء data- لم تكن السمات حول تدهور رشيق ، فقد كان الأمر يتعلق بـ JavaScript غير مزعجة.

في القضبان 2 ، تحديد :method => :delete على الارتباط ، سيولد مجموعة كاملة من JavaScript المضمّن من شأنها أن تنشئ نموذجًا مع إدخال مخفي ثم إرسال النموذج. كان هذا هو نفسه كما هو الآن: قم بإيقاف تشغيل JavaScript ويتخلف عن طلب الحصول على طلب. على هذا النحو ، فإن دعم حالة عدم وجود JavaScript هو نفسه كما كان من قبل.

يتمثل أحد الخيارات في استخدام نموذج/زر بدلاً من الرابط حتى تتمكن من تضمين الطريقة كحقل مخفي ، مثل Rails 2 JavaScript. هناك خيار آخر هو أن يأخذك إصدار GET إلى صفحة وسيطة تحتوي بدورها على النموذج/الزر.

فائدة النهج الجديد هو أنه غير مزعج. يوجد JavaScript لتغيير الفعل HTTP في ملف خارجي ويستخدم ملف data- سمات لتحديد العناصر التي يجب إرفاقها.

نصائح أخرى

بدلا من استخدام link_to الطريقة - والتي تتطلب منك استخدام JavaScript للتأكد من أن طريقة HTTP DELETE -- استخدم ال button_to الطريقة ، التي ستنشئ نموذجًا مع عنصر إدخال مخفي يخبر القضبان بمعالجة طريقة HTTP كـ DELETE عوضا عن POST. إذا لزم الأمر ، يمكنك بعد ذلك استخدام CSS لتصميم الزر في النموذج بحيث يبدو وكأنه رابط.

الفرصة الوحيدة لديك هي تحديد النموذج. لا يمكن أن يكون الرابط منشورًا مع _method = "حذف" بدون javaScript أو عن طريق النموذج.

لا يمكن بدون جافا سكريبت.

أقوم بعمل مكون إضافي jQuery صغير للتحويل data-method سمة الارتباط إلى النماذج المخفية الزائفة (المستخدمة في مشروع Laravel على سبيل المثال).

إذا كنت تريد استخدامه: https://github.com/ifnot/restfulizerjs

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