للحصول على الوثائق الأكثر اكتمالا وسهلة الاستخدام، راجع دليل FriendlyId.
FriendlyId هي "جرافة الجيش السويسري" للمكونات الإضافية البطيئة والرابط الثابت لـ Active Record. يتيح لك إنشاء عناوين URL جميلة والعمل مع سلاسل سهلة الاستخدام كما لو كانت معرفات رقمية.
باستخدام FriendlyId، من السهل جعل تطبيقك يستخدم عناوين URL مثل:
https://example.com/states/washington
بدلاً من:
https://example.com/states/4323454
اطرح أسئلة على Stack Overflow باستخدام علامة "Friend-id"، وبالنسبة للأخطاء، قم بإلقاء نظرة على قسم الأخطاء
يقدم FriendlyId العديد من الميزات المتقدمة، بما في ذلك:
أضف هذا السطر إلى ملف Gemfile الخاص بالتطبيق الخاص بك:
gem 'friendly_id' , '~> 5.5.0'
ملاحظة: يجب عليك استخدام الإصدار 5.0.0 أو أحدث لإصدار Rails 4.0+.
ومن ثم تنفيذ:
bundle install
أضف عمودًا slug
إلى الجدول المطلوب (على سبيل المثال Users
)
rails g migration AddSlugToUsers slug:uniq
قم بإنشاء ملف التكوين المألوف وترحيل جديد
rails generate friendly_id
ملاحظة: يمكنك حذف عملية ترحيل CreateFriendlyIdSlugs
إذا كنت لن تستخدم ميزة سجل الارتباط التقريبي. (اقرأ المزيد)
قم بتشغيل البرامج النصية للترحيل
rails db:migrate
قم بتحرير الملف app/models/user.rb
كما يلي:
class User < ApplicationRecord
extend FriendlyId
friendly_id :name , use : :slugged
end
قم بتحرير الملف app/controllers/users_controller.rb
واستبدل User.find
بـ User.friendly.find
class UserController < ApplicationController
def show
@user = User . friendly . find ( params [ :id ] )
end
end
الآن عندما تقوم بإنشاء مستخدم جديد كما يلي:
User . create! name : "Joe Schmoe"
يمكنك بعد ذلك الوصول إلى صفحة عرض المستخدم باستخدام عنوان URL http://localhost:3000/users/joe-schmoe.
إذا كنت تضيف FriendlyId إلى تطبيق موجود وتحتاج إلى إنشاء ارتباطات ثابتة للمستخدمين الحاليين، فقم بذلك من وحدة التحكم أو المشغل أو قم بإضافة مهمة Rake:
User . find_each ( & :save )
:allow_nil
يمكنك تمرير allow_nil: true
للتابع friendly.find()
إذا كنت تريد تجنب رفع ActiveRecord::RecordNotFound
وقبول nil
.
MyModel . friendly . find ( "bad-slug" ) # where bad-slug is not a valid slug
MyModel . friendly . find ( 123 ) # where 123 is not a valid primary key ID
MyModel . friendly . find ( nil ) # maybe you have a variable/param that's potentially nil
#=> raise ActiveRecord::RecordNotFound
MyModel . friendly . find ( "bad-slug" , allow_nil : true )
MyModel . friendly . find ( 123 , allow_nil : true )
MyModel . friendly . find ( nil , allow_nil : true )
#=> nil
يرجى الإبلاغ عنها على أداة تعقب مشكلات Github لهذا المشروع.
إذا كان لديك خطأ للإبلاغ عنه، يرجى تضمين المعلومات التالية:
إذا كنت قادرًا على ذلك، فمن المفيد أكثر أن تتمكن من تفرع FriendlyId على Github، وإضافة اختبار يعيد إنتاج الخطأ الذي تواجهه.
لمزيد من الإلهام حول كيفية الإبلاغ عن الأخطاء، يرجى الاطلاع على هذه المقالة.
تم إنشاء FriendlyId في الأصل بواسطة نورمان كلارك وأدريان موجنولو، بمساعدة كبيرة في وقت مبكر من حياته بواسطة إميليو تاجوا. تتم صيانته الآن بواسطة نورمان كلارك وفيليب أرندت.
نحن ممتنون للغاية للمساهمات السخية التي قدمها العديد من المتطوعين على مر السنين.
حقوق الطبع والنشر (ج) 2008-2020 لنورمان كلارك والمساهمين، تم إصدارها بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج")، للتعامل في البرنامج دون قيود، بما في ذلك، على سبيل المثال لا الحصر، حقوق الاستخدام والنسخ والتعديل والدمج. ونشر و/أو توزيع وترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك، على سبيل المثال لا الحصر، ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في برمجة.