我的 Rails 应用程序中有一个文本字段,我已为其应用了 jquery 自动完成功能,该功能在我的本地主机中运行良好。
我已将应用程序上传到heroku,现在它给了我一个错误。
经过调试,我发现错误是我的查询。在我本地,我使用 sql,但在 heroku 上它是 PostgreSQL。
我的 Controller 自动完成操作:
@places = Place.order(:name).where("name like ? or pincode like ?" , "%#{params[:term]}%", "%#{params[:term]}%")
render json: @places.map{|p| "#{p.name} : #{p.pincode}"}
在heroku上它向我显示了这样的错误
PG::UndefinedFunction: ERROR: operator does not exist: integer ~~ integer
所以我认为它与 pincode(这是一个整数)的参数有关,但我将它作为字符串传递。 (不过我不确定)
所以我将查询更改为
@places = Place.order(:name).where("name like ?" , "%#{params[:term]}%")
现在它工作正常,但不搜索 pincode 中的匹配项。
我尝试以多种方式构建查询,以便我可以同时搜索两者,但没有用。有人可以帮我查询吗?
最佳答案
听起来您的本地计算机上必须有不同版本的 Postgres。
但是无论是哪个版本,您都应该能够使用
将其转换为文本@places = Place.order(:name).where("name like ? or pincode::text like ?" , "%#{params[:term]}%", "%#{params[:term]}%")
关于mysql - Ruby on Rails : JQuery autocomplete on heroku server (SQL, PostgreSql 可能错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27368304/