使搜索参数小写

时间:2014-12-31 19:18:40

标签: search ruby-on-rails-4 params

我得到了这段代码的帮助,因为我正在学习如何使用params,我希望它在开始搜索之前是小写的。当用户提交地址时,我已经处理了地址上的小写。

我在哪里把小写字母放在参数中?

@ads_item_plus_today = @ads_item_plus_today.where(category_id: params[:category_id]) if params[:category_id]

@ads_item_plus_today = @ads_item_plus_today.where("address LIKE ?", "%#{params[:address]}%") if params[:address] && params[:address] != ''

1 个答案:

答案 0 :(得分:0)

您可以就地妥协:

if params[:address].present?
  params[:address].downcase!
  @ads_item_plus_today = @ads_item_plus_today.where("address LIKE ?", "%#{params[:address]}%")
end

...这将修改params[:address]中的值,或者您可以制作一份内容的副本:

if params[:address].present?
  address = params[:address].downcase
  @ads_item_plus_today = @ads_item_plus_today.where("address LIKE ?", "%#{address}%")
end

...不会改变params[:address]

但是,您根本不需要这样做,具体取决于您的数据库。在许多配置LIKE comparisons in MySQL are case-insensitive中(您可以使用SHOW COLLATION查看,或使用COLLATE按查询设置)。在PostgreSQL中,您可以使用ILIKE代替LIKE来使其不区分大小写。