ما الفرق بين: جديد،: جمع و: طرق الأعضاء؟
-
13-09-2019 - |
سؤال
لقد قرأت توثيق, ، لكنني ما زلت غير متأكد من أنني أفهم كل شيء.
خاصة لماذا هناك :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.