Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

रेल खोज फ़ॉर्म पर डीबी क्वेरी पास नहीं कर रहे हैं

क्या आप वाकई कक्षा विधि search . को परिभाषित कर चुके हैं item.rb . में ? क्योंकि त्रुटि कहती है कि कोई search नहीं है Item . पर परिभाषित विधि कक्षा। हालांकि, अगर निम्नलिखित आपके लिए काम करता है तो कोशिश करें।

आप केवल यह खोजना चाहते हैं कि फ़ॉर्म सबमिट किया जा रहा है या नहीं। आप present? . का उपयोग कर सकते हैं यह जानने की विधि कि क्या खोज शब्द वास्तव में पारित किया गया था।

अपने नियंत्रक को संशोधित करें

def index
  @items = params[:search].present? ? Item.search(params[:search]) : Item.all
end

ध्यान दें कि एक वस्तु present है केवल अगर यह खाली नहीं है। यह आसान है क्योंकि अगर कोई फॉर्म में " " दर्ज करता है, तो आपको nombre में खाली जगह की तलाश नहीं करनी चाहिए। फ़ील्ड लेकिन Item . में सभी रिकॉर्ड प्रदर्शित करें टेबल।

अगर फॉर्म सबमिट नहीं किया गया था, Item.all निष्पादित किया जाएगा।

अपनी कक्षा पद्धति को संशोधित करें

def self.search(search_term)
  where("nombre LIKE ?", "%#{search_term}%")
end

आपको Item.where क्योंकि क्लास Item वर्तमान संदर्भ है जिस पर where विधि कहा जाता है। ध्यान दें कि मैंने पैटर्न को %#{search_term}% . में बदल दिया है क्योंकि आप हमेशा किसी पैटर्न के साथ समाप्त होने वाली स्ट्रिंग्स का मिलान नहीं करना चाहते हैं।

आशा है कि यह मदद करेगा!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में समय अंतराल मानों को स्टोर करने का सबसे अच्छा तरीका?

  2. ग्लासफ़िश सर्वर पर किसी वेब सेवा में डेटाबेस का उपयोग करने के लिए 'कोई उपयुक्त ड्राइवर नहीं मिला' त्रुटि

  3. क्या Percona MySQL के साथ पीछे की ओर संगत है? रूबी इन रेल्स केस

  4. स्प्रिंग बूट जेपीए:समान पैरामीटर (जेपीक्यूएल) के लिए एकाधिक मान पास करना

  5. 3 सबसे हाल के रिकॉर्ड का चयन करें जहां एक कॉलम के मान अलग हैं