سؤال

أنا أكتب نموذج بحث عن Rails (2.3.9 لكنني راجعت أن هذه المشكلة موجودة أيضًا على طلب 3.0.3). المشكلة هي أن القضبان تجريد علامات الاقتباس من إدخال المستخدمين. أود أن أعطي المستخدمين إمكانية الكتابة:

  • "Ruby on Rails": وهذا من شأنه أن يبحث في النص الكامل عن السلسلة بأكملها
  • Ruby on Rails: هذا من شأنه أن يبحث عن مقالات مع كل هذه الكلمات الثلاث

لكن في وحدة التحكم الخاصة بي لكلتا الحالتين ، أحصل على سلسلة واحدة فقط:

Processing NewsController#index (for 127.0.0.1 at 2010-11-23 10:23:15) [GET]
  Parameters: {"action"=>"index", "controller"=>"news", "search"=>{"category"=>"", "news_agency"=>"", "fullsearch"=>"ruby on rails", "order"=>""}}

هل هناك أي خيار لتخطي هذا تجريد علامات الاقتباس؟

ملاحظة:عندما يضيف المستخدم مسافات إلى الجانبين لسلسلة البحث على سبيل المثال: "" Ruby on Rails "" سيتم إرسال السلسلة بشكل صحيح:

Processing NewsController#index (for 127.0.0.1 at 2010-11-23 10:23:15) [GET]
  Parameters: {"action"=>"index", "controller"=>"news", "search"=>{"category"=>"", "news_agency"=>"", "fullsearch"=>" \"ruby on rails\" ", "order"=>""}}
هل كانت مفيدة؟

نصائح أخرى

ستصل جميع المعاملات من النموذج إلى وحدة التحكم كأسلاك ، حيث تقوم Rails بإصدار قيم إلى قاعدة البيانات عبر ActivereCord ، لذلك تعرف ما إذا كنت ترسل "5" إلى عمود عدد صحيح في DB ، يجب تغييره إلى 5. ولكن للبحث سلاسل ، تحتاج إلى القيام ببعض السحر الخاص بك. مثل ذلك:

irb(main):001:0> "ruby on rails".split(" ")
=> ["ruby", "on", "rails"]

الذي يوفر مجموعة من مصطلحات البحث للبحث مقابل كل مصطلح فردي.

irb(main):006:0> terms
=> ["ruby", "on", "rails"]
irb(main):013:0> terms.each do |term|
irb(main):014:1* puts "this sentence on rails".match(term)
irb(main):015:1> end
nil
on
rails
=> ["ruby", "on", "rails"]

لا يمكنني إعادة إنتاجه في قضبان بلدي 2.3.5. هل أنت متأكد من أنه ليس متصفحًا يقوم بتجريد علامات الاقتباس؟ أيضًا ، هل يحدث ذلك إذا كنت تستخدم Post لنموذج البحث؟

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