我正在尝试在我的应用中制作简单的搜索功能。为此,用户将在页面“/ search / users / [query]”上搜索。参数设置正确,但我无法弄清楚如何设置它以便在数据库中搜索搜索词在其用户名中的所有用户。我觉得我差不多了,但它不起作用:
def search_handler
@query = params[:query]
@type = params[:type]
if @type == "users"
@users = User.all.username.match(@query/i)
end
end
答案 0 :(得分:2)
您可以尝试在params[:query]
ActiveRecord语句中将LIKE
传递给where
SQL查询:
def search_handler
@query = params[:query]
@type = params[:type]
if @type == 'users'
@users = User.where('username LIKE ?', "%#{@query}%")
end
end
这将为您提供用户名与您已通过的@query
值匹配的所有用户,从而生成如下SQL查询:
SELECT "users".* FROM "users" WHERE (username LIKE '%blablabla%') LIMIT ? [["LIMIT", 11]]
您可以查看ActiveRecord Query Methods
以改进Rails中的查询。