تمرير المعلمات كمتغيرات المسار في روبي على القضبان

StackOverflow https://stackoverflow.com/questions/293409

سؤال

ما زلت جديدًا على ROR، لذا أعذرني على بساطة السؤال...

لذا http://www.example.com/controller/:id يعرض سجلاً في الجدول الخاص بي، حيث يكون :id رقمًا (1،2،3 وما إلى ذلك).

هل هناك طريقة يمكنني من خلالها أن أكون :id في عنوان URL هو قيمة حقل في السجل المعروض؟بحيث أستطيع الحصول عليه http://www.example.com/controller/record_field؟أريد الحصول على مرجع صديق للإنسان لسجلات محددة في الجدول الخاص بي.أنا متأكد من أن هذا يجب أن يكون ممكنا.هل أقوم بتغيير شيء ما فيways.rb؟

شكرا للمساعدة!

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

المحلول

وأنظف وسيلة لإضافة أسلوب الاكتشاف الجديد في النموذج الخاص بك (أو ببساطة استخدام القضبان find_by_fieldname يمنحك في التحكم الخاصة بك). ثم سيكون لديك جهاز تحكم استخدام هذه الطريقة بدلا من العثور منتظم (بارامس [: معرف]). لسحب سجل النموذج الخاص بك

تحقق من سكرينكست ريان B على هذه هنا . فإنه من السهل جدا، وانه معلم جيد، لذلك يجب أن لا يكون أي مشاكل.

نصائح أخرى

ويمكنني استخدام القضبان ممتازة المساعد اسمه friendly_id.

http://github.com/norman/friendly_id/tree/master

وهذا يجب فرز لكم بشكل جيد. تم توثيقه جيدا للغاية.

والعناية حول المجالات التي قد يكون حرفا قد اليونانية الحديثة بحاجة إلى معرفة عمل حول بالنسبة لأولئك.

سوف ينجح حل جون سموك أيضًا.أنا أميل إلى تفضيل ما يلي.

class Hamburger << ActiveRecord::Base

  #this normally defaults to id
  def to_param 
     name
  end

end

class SomeModelController << ApplicationController

  def show 
    @hamburger = Hamburger.find(params[:id])  #still default code
  end
end

#goes in some view
This is the <%= link_to "tastiest hamburger ever", url_for(@hamburger) %>.

هذه، بشكل عام، تقنية تحسين محركات البحث (عناوين URL الجميلة هي أيضًا سهلة الاستخدام وأقترحها على الجميع تمامًا حتى إذا كنت لا تهتم بتحسين محركات البحث، على سبيل المثال، على الصفحات خلف تسجيل الدخول).لدي مناقشة موسعة حول Rails SEO، والتي تتضمن نصائح أخرى مثل هذه، هنا.

نصيحة هامة: يجب أن تفكر، في وقت التصميم، في ما ستفعله إذا كان param يجب أن تتغير.على سبيل المثال، في سيناريو الهامبرغر الخاص بي، من الممكن تمامًا أن أقوم بإعادة تسمية "Sinously Delicious Cheeseburger" إلى "Triple Bypass".إذا أدى ذلك إلى تغيير عناوين URL، فهناك بعض الآثار المحتملة، مثل تعطل روابط العملاء إلى موقع الويب الخاص بي.وفقا لذلك، لاستخدام الإنتاج عادة ما أعطي هذه النماذج غير قابلة للتغيير permalink السمة التي أهيئها لتكون ذات معنى إنساني بالضبط مرة واحدة.إذا تغير الكائن لاحقًا، حسنًا، سيظل عنوان URL كما هو.(هناك حلول أخرى، وهذا هو الحل الأسهل).

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