2016-09-15 4 views
1

私は、URLのパラメータでフィルタリングするオブジェクトのリストを持っています。ですから、例えばRubyは、キーがパラメータのような配列から選択します

@items = items.select { |item| params[:q] == item.name } 

は、しかし、これは正確に一致します...どのように私はそれが好きなように振る舞うことができますか?

+0

"LIKEとして" 何を意味するのでしょうか? "formula"は "or"のようなものですか?パラメータが「URL内」(「URL」が何を指していても)であるという違いがありますか?この質問は例を求めている。私はdownvotedしたが、質問が明らかになった場合は削除されます。 –

+0

私は 'params [:q]'と 'item.name'はどちらも文字列ですが、配列である可能性があります。それも同様に明確にする必要があります。 –

答えて

2
@items = items.select { |item| item.name.include?(params[:q]) } 

編集:

あなたは大文字と小文字を区別するマッチングが必要な場合。

@items = items.select { |item| item.name.downcase.include?(params[:q].downcase) } 
+0

大文字と小文字は区別されますか? – Cameron

+0

はい、大文字と小文字が区別されます。 –

+0

'item.name'は文字列か配列かと思いますか? item.namesではなく文字列であることを示していますが、わかりません。あなたの答えにあなたの前提を述べるのが最善です。または、より良いことに、OPの説明を求めてください。 –

0

あなたは正規表現を使用することができます。

pattern = /#{params[:q]}/ 
@items = items.select { |item| pattern =~ item.name } 
+0

'pattern#=>/out /'は 'item.name#=> 'shouting'と一致します。それがあなたの意図なら、なぜあなたは「ライク」のように解釈しましたか? –

+0

私はあなたを理解しているかわかりません。 RegexpはLIKEと同様にsubstring matchintに使用できますか? Btw。受け入れられた答えからの解決策も同様に叫び声で一致します: '> '叫び声'? 'out' => true' – mrzasa

+0

「LIKE」では、 'params [:q]'が 'item.name'の部分文字列であるかどうかを必ずしも問い合わせる必要はありません(文字列か配列の場合 - 確かに)。 params [:q]は、同じ文字数の文字列であれば、「item.name」に似ています。実際には、OPによって選択された回答から推論を行うことはできますが、それはあなたの回答を投稿する前であったため、あなたが推測した理由を説明しません。さらに、多くの時間OPは、彼らが尋ねたことや単に間違っていることをしない答えを選択しています。 –

関連する問題