क्या आप वाकई कक्षा विधि 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}% . में बदल दिया है क्योंकि आप हमेशा किसी पैटर्न के साथ समाप्त होने वाली स्ट्रिंग्स का मिलान नहीं करना चाहते हैं।
आशा है कि यह मदद करेगा!