我得到了这段代码的帮助,因为我正在学习如何使用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] != ''
答案 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
来使其不区分大小写。