私がやろうとしていること:チェックボックス (タグと呼びます) から文字列の配列を取得するメソッド「検索」と単一の文字列を定義したモデル「レシピ」があります。アイデアは、文字列を含む「名前」または「指示」に何かがあり、かつ「タグ」プロパティに一致するタグのいずれかも含むレシピをデータベースで検索することです。
問題:検索メソッドはデータベース内のすべてのレシピを返しますが、特定のパラメーターによる検索ではまったく機能していないようです。
コントローラーのアクション メソッド:
def index
@recipes = Recipe.search(params[:search], params[:tag])
if !@recipes
@recipes = Recipe.all
end
respond_to do |format|
format.html
format.json { render json: @recipe }
end
end
私のモデルの検索方法:
def self.search(search, tags)
conditions = ""
search.present? do
# Condition 1: recipe.name OR instruction same as search?
conditions = "name LIKE ? OR instructions LIKE ?, '%#{search[0].strip}%', '%#{search[0].strip}%'"
# Condition 2: if tags included, any matching?
if !tags.empty?
tags.each do |tag|
conditions += "'AND tags LIKE ?', '%#{tag}%'"
end
end
end
# Hämtar och returnerar alla recipes där codition 1 och/eller 2 stämmer.
Recipe.find(:all, :conditions => [conditions]) unless conditions.length < 1
end
すべてのレコードを返す理由はありますか?