新手问题 RanSack 搜索自动去空格的问题。

bluswang · 2017年12月13日 · 最后由 bluswang 回复于 2017年12月13日 · 1210 次阅读

请教一下大家,有没有遇到过使用 ransack 搜索,输入框的搜索条件中的空格也被算作搜索内容的问题。

例如:

SELECT "users".* FROM "users" LEFT OUTER JOIN "posts" ON "posts"."user_id" = "users"."id" WHERE ("posts"."title" ILIKE '% a %')

我在‘a’前后故意加空格,SQL 语句中空格也算搜索内容了。请问下有什么自动去空格的办法吗?

string.gsub!(' ', '')

strip 比较合适,gsub 把字符中间的空格也会去掉

@fangxing204 我了解到 strip 可以去前后的空格,但是我用的是 ransack, 例如:

ransack 自动处理了搜索条件。我要在 ransack 处理之前判断字段 然后 strip 吗。如果涉及很多条件,每个都判断那就很麻烦。

params[:q].each do |k, v|
  params[:q][k] = v.strip
end

@michael0015 @fangxing204 感谢,最后的方法可以。

bluswang 关闭了讨论。 12月13日 17:28
bluswang 重新开启了讨论。 12月13日 17:29
bluswang 关闭了讨论。 12月13日 17:29
需要 登录 后方可回复, 如果你还没有账号请 注册新账号