القضبان العلاقة بين الأيام و link_to
-
18-09-2019 - |
سؤال
ها هي مخططي
class Menu < ActiveRecord::Base
belongs_to :menuable, :polymorphic => true
end
class Page < ActiveRecord::Base
has_one :menu, :as => :menuable
end
class Links < ActiveRecord::Base
has_one :menu, :as => :menuable
end
أريد الارتباط بصف متعدد الأشكال في عرض القائمة باستخدام link_to، على سبيل المثال
<%= link_to menu.name, menu.menuable %>
هذا يعمل، ولكن هذا يسترجع الكائن الداخلي من قاعدة البيانات، عندما يكون كل ما أردت هو توليد رابط. يمكنك تخيل ما إذا كانت قوتي كبيرة، فسيحتوي ذلك على تطبيقي حقا.
عندما سجلت الحقل القابل للتنظيم كأمر قطاعي، أنشأ القضبان Rails Rail_Type و Locureable_ID. ما الذي يمكنني استخدامه لإنشاء رابط للصفحة متعددة الأعمدة، وقصر كتابة وظيفة مساعد مع عبارة تبديل عملاقة (على سبيل المثال إذا كان لدي عدد كبير من الفئات الفرعية "؟)
المحلول
لقد مضى وقت طويل منذ طرح السؤال ولكن كان لدي نفس المشكلة مؤخرا وكان الحل استخدام polymorphic_url
. وبعد تحتاج إلى العثور على اسم الطريق الذي تحتاجه لإنشاء رابط إليه، على سبيل المثال "fast_car_path" واجعله خارج * _type و * _id من الجدول متعدد الأشكال. على سبيل المثال، لديك قائمة بالتعليقات وترغب في تحقيق الرابط إلى السيارات التي ينتمون إليها. لذلك إذا * _type = fastcar لدينا
@comments.each do |comment|
link_to polymorphic_url(comment.commentable_type.tableize.singularize, :id => comment.commentable_id)
والتي ستولد "fast_car_path" دون تنزيل السيارات من قاعدة البيانات.
أنا مستجد في القضبان ولا أعرف مدى جودة هذه النصيحة، ولكن آمل أن تكون مفيدة لشخص ما.
نصائح أخرى
يمكنك أن تفعل شيئا مثل هذا:
def my_menu_url(menu)
"/#{menu.menuable_type.tableize}/#{menu.menuable_id}"
end
إذا كنت تستخدم اتفاقية القضبان لتسمية وحدات التحكم التي المراسل مع النماذج الخاصة بك.
ولكن لا تفعل ذلك. أنت تعمل حول آلية التوجيه من القضبان وهذا بمجرد ممارسة سيئة.
يجب عليك استخدام الخيار: قم بتضمينه في الباحثين عن تحميل الحمل الخاص بك
Menu.all :include => :menuable
في الحالة، لا يكفي ذلك، قد تستخدم نوعا من التخزين المؤقت.