簡體   English   中英

nil:NilClass 的未定義方法“gsub”

[英]undefined method `gsub' for nil:NilClass

我是 ruby​​ on rails 的新手.. 我遇到 gsub 問題.. 我每次去我的商店頁面列表時都會說“nil:NilClass 的未定義方法 `gsub'”..

這是我的代碼:

def self.search(search_val, page = 1)
    @search_val = search_val.gsub("'", "\\\\'")
    search_query = "store_id LIKE '%#{ @search_val }%' OR english_name LIKE '%#{ @search_val }%' OR chinese_name LIKE '%#{ @search_val }%'"
select("jos_store.id, store_id, english_name, chinese_name, store_manager, delivery_area,year, week").joins("LEFT OUTER JOIN (SELECT id as store_replenishment, store, MAX(stock_movement) AS stock_movement FROM jos_store_replenishment GROUP BY store) AS replenishment ON replenishment.store = jos_store.id").joins("LEFT OUTER JOIN jos_stock_movement ON jos_stock_movement.id = replenishment.stock_movement").where(search_query).order("year DESC, week DESC").paginate :page => page, :per_page => 15  
  end

提前致謝

當您使用字符串方法時,一個好的做法是執行.to_s

您可以在search_val上使用&運算符。 它允許您避免空指針異常,而無需添加額外的檢查或使用to_s將字符串轉換為字符串。

所以,你會有這樣的東西:

@search_val = search_val&.gsub("'", "\\\\'")

您可以在此處閱讀有關安全導航運算符的更多信息:http: //mitrev.net/ruby/2015/11/13/the-operator-in-ruby/

這意味着search_val實際上是 nil。 您可以通過打印出search_val的值來輕松驗證這一點。

我不確定這是否是您的情況,但是在幾次回滾和遷移之后,我發生了相同的undefined方法gsub for nil:NilClass錯誤。

然后,我重新啟動服務器並工作。 對於一些在 Google 上搜索到此主題的人來說,可能就是這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM