基于用户复选框选择的动态查询创建

时间:2016-02-12 17:30:58

标签: ruby-on-rails-4 activerecord

我正在尝试构建一个用户可以选择多个复选框的应用。 我需要构建一个动态查询来从数据库中获取数据,但是会出错。 这是我的动态查询控制器代码。

if params[:food_type] != nil
      params[:food_type].each do |food_type|
         query_string << ' OR ' unless query_string.empty?
        query_string << 'food_type = ?'
        query_values  << food_type 

     end
   end
     wrev["wrev"]  = SearchResult.where(query_string, query_values)
         @pgresults << wrev
         wrev = {}

    respond_to do |format|
    format.html
    format.json { render json: @pgresults }

我收到错误,因为“准备好的语句无效(绑定变量的数量错误)。 我定义了

query_string = String.new
   query_values = []

1 个答案:

答案 0 :(得分:0)

你可以传递&#34; query_string&#34;作为&#34; query_values&#34;的一部分作为一个数组,请参阅method where documentation

if params[:food_type] != nil
      params[:food_type].each do |food_type|
         query_string << ' OR ' unless query_string.empty?
        query_string << 'food_type = ?'
        query_values  << food_type 

     end
   end
     query_values.unshift(query_string) #add the string at the beginning of the array
     wrev["wrev"]  = SearchResult.where(query_values) #passing the arrary with the query string and the values as just one array.
         @pgresults << wrev
         wrev = {}

    respond_to do |format|
    format.html
    format.json { render json: @pgresults }