2
在使用該命令多個列:搜索與Rails的
@items = Item.find(:all,:order => 'name', :conditions => ["name LIKE ?", "%#{params[:key]}%"])
這工作完全正常,但搜索只是基於剛剛列。我如何使其搜索其他列,如描述,類別?
在使用該命令多個列:搜索與Rails的
@items = Item.find(:all,:order => 'name', :conditions => ["name LIKE ?", "%#{params[:key]}%"])
這工作完全正常,但搜索只是基於剛剛列。我如何使其搜索其他列,如描述,類別?
我假設您正在使用Rails 2,因爲您使用的是ActiveRecord 2樣式語法。你可以只添加其他列作爲附加條件,如:
key = "%#{params[:key]}%"
@items = Item.find(:all, :conditions => [
'name LIKE ? OR description LIKE ? OR category LIKE ?',
key, key, key
], :order => 'name')
僅供參考,這裏是你會怎麼做它的Rails 3:
key = "%#{params[:key]}%"
@items = Item.where('name LIKE ? OR description LIKE ? OR category LIKE ?', key, key, key).order(:name)
如果你有15列,以進行搜索,那麼你會重複鍵15次。而不是在查詢重複鍵15次,你可以這樣寫:
key = "%#{params[:key]}%"
@items = Item.where('name LIKE :search OR description LIKE :search OR category LIKE :search', search: key).order(:name)
它會給你同樣的結果。
謝謝
MetaWhere已經成功由Squeel(同一作者)http://erniemiller.org/projects/squeel/ –