私は次のようにモデルにwhere()
を呼び出すことによって、クエリを検索できることを承知している: Post.where(:title => 'My First Post')
Rails3で検索を実行するにはどうすればよいですか?
しかし、私は、ユーザーが検索パラメータをフィルタリングしたい場合何がわからない場合は? たとえば、オプションのtitle
フィールドを持つ検索フォームがあります。タイトルが記入されている場合、フォームはタイトルを検索する必要があります。しかし、そうでなければ、フォームはすべてのフィールドを返すだけです。
を追加することはできません、私はどのように行うのですかしかし、Railsのimmidiatelyは、検索の結果を返す
search = Post.all
if params[:title].present?
search.where(:title => params[:title])
end
の線に沿って何かをやってみました
この?
ありがとうございます!ここでチェーンへの関係のように、あまりないです、本当に、三項演算子を持つシンプルなワンライナーが行う可能性があることをそこに思われることを考えると
次にフィールドを取得せずにリソースを取得すると、条件を呼び出すことができます。ありがとう! –
1つのオプションは、 'search = Post.unscoped'または' search = Post.scoped'を設定することです。これはあなたに再生するarel関係を残します。また、条件付きでスコープを追加する方法を再考し、モデルでより適切に対処しようとします。 – idlefingers