未定义的方法'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
。
答
您可以在search_val
上使用&
运算符。它允许您避免使用空指针异常,而无需添加额外的检查或使用to_s
将字符串转换为字符串。
所以,你有这样的事情:
@search_val = search_val&.gsub("'", "\\\\'")
你可以阅读更多有关安全导航操作位置:http://mitrev.net/ruby/2015/11/13/the-operator-in-ruby/
感谢球员,但我已经找出了答案......我把一个“除非search_val.blank?”在我的gsub之前,例如。 除非search_val.blank? @search_val = search_val.gsub(“'”,“\\\''”) – Lian 2012-07-18 09:21:54
为什么所有者不会将其中一个答案标记为实际接受的答案?至少,解释真的对我有用! – Agat 2013-10-03 16:43:52