2017-01-23 86 views
0

首先,我使用的軌道4與MySQL LIKE查詢總是返回零

我試圖做的是搜索一些用戶名在我的MySQL數據庫。

但是,不管我的查詢是,@search爲零,其結果是404

這裏是我的代碼。

我試着與我的PARAMS一些變化[:查詢]如

「%#{PARAMS [:查詢]}%」 或只是PARAMS [:查詢]用了 「%」。

但它仍然沒有工作

任何幫助將不勝感激。

def search_user 
     @searh=User.where('username LIKE ?', "%"+params[:query]+"%").all 
     if @search == nil 
      then 
      head 404, content_type: "text/html" 
      else 
      render json: @search.to_json, status: 200 
     end 
    end 
+0

赤:DEF search_user \t query_search = 「%#{PARAMS [:查詢]}%」 @ searh = User.where( '用戶名怎麼樣?',query_search)。所有 –

+0

你可以嘗試'@search =用戶。「(用戶名LIKE?」,「%#{params [:query]}%」)' –

+0

爲類似參數生成一個字符串,並將其傳遞給查詢 –

回答

0

我總是用它喜歡:

@searh=User.where('username LIKE ?', "'%#{params[:query]}%'") 

通知所生成的SQL查詢時,該模式將被用單引號包圍:

username LIKE '%whatever%' 
2
def search_user 
     @searh=User.where('username LIKE ?', "%#{params[:query]}%").all 
     if @search == nil 
      then 
      head 404, content_type: "text/html" 
      else 
      render json: @search.to_json, status: 200 
     end 
    end 

我希望它在你的代碼中工作。

+0

這很好,我編輯了我的數據庫的字符集UTF-8。我想我的搜索詞是韓語,所以在編碼數據庫中的韓語時可能會出現問題。無論如何,這個代碼非常棒。 –