未定义的方法'gsub'为零:NilClass

问题描述:

我是ruby on rails的newvbie ..我遇到了gsub问题..我每次去我商店页面的列表时都会说“未定义的方法`gsub'对于零:NilClass” ..未定义的方法'gsub'为零:NilClass

这里是mycode的:

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 

在此先感谢

这意味着search_val其实是零。您可以通过打印出search_val的值来轻松进行验证。

当您使用字符串方法时,一个好的做法是在做.to_s

+0

感谢球员,但我已经找出了答案......我把一个“除非search_val.blank?”在我的gsub之前,例如。 除非search_val.blank? @search_val = search_val.gsub(“'”,“\\\''”) – Lian 2012-07-18 09:21:54

+2

为什么所有者不会将其中一个答案标记为实际接受的答案?至少,解释真的对我有用! – Agat 2013-10-03 16:43:52

您可以在search_val上使用&运算符。它允许您避免使用空指针异常,而无需添加额外的检查或使用to_s将字符串转换为字符串。

所以,你有这样的事情:

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

你可以阅读更多有关安全导航操作位置:http://mitrev.net/ruby/2015/11/13/the-operator-in-ruby/