未定义的方法`gsub'代表nil:NilClass

时间:2012-07-16 05:24:47

标签: ruby-on-rails ruby-on-rails-3.1

我是新手上的ruby on rails ..我遇到了gsub的问题..我每次去商店页面列表时都会说“未定义的方法`gsub'为nil: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

提前致谢

3 个答案:

答案 0 :(得分:14)

当您使用字符串方法时,一个好习惯是.to_s

答案 1 :(得分:3)

这意味着search_val实际上是零。您可以通过打印search_val

的值轻松验证这一点

答案 2 :(得分:0)

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

所以,你会有这样的事情:

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

您可以在此处详细了解安全导航操作符:http://mitrev.net/ruby/2015/11/13/the-operator-in-ruby/