sql >> データベース >  >> RDS >> Mysql

検索フォームでDBクエリを渡さないRails

    クラスメソッド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}%に変更したことに注意してください あるパターンで終わる文字列を常に一致させたいとは限らないからです。

    これがお役に立てば幸いです!




    1. Oracleでスキュー異常を書き込み、PostgreSQLはトランザクションをロールバックしません

    2. PostgreSQLCASE...複数の条件で終了

    3. 変数を割り当てるときのSETとSELECT?

    4. HAProxy:すべてのSevereninesリソース