クラスメソッドsearchを定義しましたか? item.rb内 ?エラーの原因は、searchがないことを示しています Itemで定義されたメソッド クラス。ただし、次の方法で問題が解決するか試してみてください。
フォームが送信されている場合にのみ検索します。 present?を使用できます 検索語が実際に渡されたかどうかを知る方法。
コントローラを次のように変更します
def index
@items = params[:search].present? ? Item.search(params[:search]) : Item.all
end
オブジェクトがpresentであることに注意してください 空白でない場合のみ。これは、誰かがフォームに「」と入力した場合、nombreで空のスペースを検索するべきではないため便利です。 フィールドですが、itemsのすべてのレコードを表示します テーブル。
フォームが送信されなかった場合は、Item.all 実行されます。
クラスメソッドを次のように変更します
def self.search(search_term)
where("nombre LIKE ?", "%#{search_term}%")
end
Item.whereは必要ありません クラスItem whereが存在する現在のコンテキストです メソッドが呼び出されます。パターンを%#{search_term}%に変更したことに注意してください あるパターンで終わる文字列を常に一致させたいとは限らないからです。
これがお役に立てば幸いです!