سؤال

لقد قرأت من خلال مستندات القضبان التوجيه, الموارد المريحة, ، و ال urlhelper, ، وما زلت لا تفهم أفضل الممارسات لإنشاء طرق معقدة/متداخلة. المثال الذي أعمل عليه الآن هو للأحداث ، التي has_many RSVPs. لذا فإن المستخدم يبحث من خلال قائمة الأحداث ، ونقرات تسجيل ، ويمر عبر عملية تسجيل ، وما إلى ذلك. أريد أن تبدو عناوين URL مثل هذا:

/events
/events/123 # possible without title, like SO
/events/123/my-event-title # canonical version
/events/my-category/123/my-event-title # also possible like this
/events/123/my-event-title/registration/new
... and all the restful nested resouces.

السؤال هو ، كيف يمكنني إنجاز هذا مع الحد الأدنى من الكود؟

هذا ما لدي حاليا:

map.resources :events do |event|
  event.resources :rsvps, :as => "registration"
end

هذا يجعلني هذا:

/events/123/registration

ما هي أفضل طريقة لإنجاز المسارين الآخرين؟

/events/123/my-event-title # canonical version
/events/my-category/123/my-event-title # also possible like this

أين my-category هو مجرد مجموعة من 10 أنواع محتملة يمكن أن يكون الحدث.

لقد عدلت Event#to_param لكي ترجع "#{self.id.to_s}-#{self.title.parameterize}", ، لكنني أفضل أن أحصل /id/title مع الكنسي كله

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

المحلول

نظرًا لأن عناوين URL الصديقة لكبار المسئولين الاقتصاديين التي تصفها لا تتوافق مع الطريقة التي يولد بها القضبان طرقًا مريحة ، فستحتاج إلى استخدام طرق منتظمة لإعدادها. علي سبيل المثال:

map.show_event 'events/:id/:event_title', :controller => 'events', :action => 'show'

لا تشعر أنه يتعين عليك استخدام الطرق المريحة التي تم إنشاؤها تلقائيًا لكل شيء في التطبيق الخاص بك. ليس من المناسب دائمًا ما تحاول القيام به. حتى دليل توجيه القضبان يقول ذلك:

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

نصائح أخرى

هل نظرت إلى القضبان دليل التوجيه؟ إنه يحتوي على الكثير من المعلومات لتجعلك تفهم جهاز التوجيه ويتضمن قسمًا الموارد المتداخلة.

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