سؤال

لقد قرأت توثيق, ، لكنني ما زلت غير متأكد من أنني أفهم كل شيء.

خاصة لماذا هناك :new معامل. بقدر ما أفهم، يمكن استبداله ب :collection معامل.

إذن ما هو الفرق بين تلك الأنواع الثلاثة من الطرق؟

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

المحلول

الفرق هو عنوان URL الذي تم إنشاؤه.
دعونا تخمين ثلاثة موارد:

map.resources :users, :collection => { :rss => :get }
map.resources :users, :member => { :profile => :get }
map.resources :users, :new => { :draft => :get }

سيقوم المسار الأول بإنشاء:

/users/rss

مع لا شيء بين اسم وحدة تحكم واسم العمل. لا نحتاج إلى أي معلمة أخرى للحصول على قائمة أجهزة RSS الخاصة بالمستخدم.

سينشئ المرء الثاني الإجراء "الملف الشخصي" كعضو في الكائن. لذلك سيكون لدينا:

/users/1/profile

"1" هو المستخدم to_param. وبعد نحتاج إلى معرف المستخدم لعرض ملف تعريف.

سيقوم المرء الثالث بإنشاء الإجراء "مشروع" كعضو في العمل الجديد. لذلك سيكون لدينا:

/users/new/draft

يعرض الإجراء "المسودة" مسودة للمستخدم قبل قبول خلقها.

هذا هو الفرق بين: جمع،: عضو و: جديد. كل منهم يخلق طرق مختلفة، كل واحد مع الغرض الخاص بهم.

نصائح أخرى

:member يخلق مسار مع نمط /:controller/:id/:your_method

:collection يخلق مسار مع النمط /:controller/:your_method

:new يخلق مسار مع النمط /:controller/:your_method/new (يرجى ملاحظة أن العنصر الأخير في المسار IE new ثابت)

New يختلف عن Collection أساسا على الطبقة الأيديولوجية. هكذا يرى راحة المعلمين إنشاء بقية "الفرعية الفرعية" داخل المورد الأكبر.

تفسير Damiens هو الصحيح في الغالب باستثناء القسم حول: جديد

لديك قراءة جيدة حقا ل Ruby على دليل توجيه القضبان في http://guides.rubyonrails.org/routing.html. يشرح توجيه التوجيه من الداخل إلى الخارج، ثم مرة أخرى مرة أخرى. يصف القسم 3.11.3 (إضافة طرق جديدة) ما: جديد يفعل، وهو مختلف تماما عن: عضو و: جمع.

في الأساس map.Resources: الصور،: جديد => {: تحميل =>: post} سينشئ / الصور / التحميل باستخدام الفعل HTTP.

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