2016-08-19 15 views
2

私はRailsに入っていて、宛先から宛先への簡単な検索を実行したいと考えています。私は基本的な検索機能とデータベースに接続しているが、FROMとTWOを選択すると出力が結合され、特定のテキストと特定のテキストへのすべてのトランスポートからすべてのトランスポートが得られます。私はそれらをフィルタリングし、FROM TOにあるものだけを持っています。Railsで2つの検索パラメータを組み合わせる方法

これまで私がこれまで持っていたことは次のとおりです。

class Transport < ApplicationRecord 
def self.searchfrom(searchfrom) 
    where("strtloc LIKE ?", "%#{searchfrom}%") 
end 

def self.searchto(searchto) 
    where("endloc LIKE ?", "%#{searchto}%") 
end 
end 

私は基本的にANDを2つのパラメータの間に追加したいが、私は立ち往生している。

これは私のtransports_controller.rb

if params[:searchfrom] 
    @transports = Transport.searchfrom(params[:searchfrom]) 
else 
    @transports = Transport.all 
end 

if params[:searchto] 
    @transports = Transport.searchto(params[:searchto]) 
else 
    @transports = Transport.all 
end 

である私はまた、唯一の中から選択する機能が欲しいです。だから私は本当に簡単なANDステートメントを行うことはできません。しかし、一度に1つ。

何か助けがありました!

答えて

0

は、次のいずれかの操作を行うことができます

@transports = Transport.where("strtloc LIKE ? AND endloc LIKE ?", "#{params[:searchfrom]}%", "#{params[:searchto]}%")

これは、2つのパラメータ間のAND演算を行います。

または

@transports = Transport.where("strtloc LIKE ?", "#{params[:searchfrom]}%") 
# first search for start locations 
@transports = @transports.where("endloc LIKE ?", "#{params[:searchto]}%") 
# then search for end locations in the result of start location. 

もチェック:HERE

+0

を、私はそれが動作しない悲しいことに最初のアプローチを試してみました。私はおそらく私のtransports_controllerに何かが見当たりません。 EDIT!それは動作します、私は前に私のコントローラで何かを変更し、私はここに私が拳で掲示したものに戻り、今はそれが魅力のように動作します!ありがとうございました! – Robert

+0

@Robert、それを聞いてうれしい。 – Emu

関連する問題