5

我是 ruby​​ on rails 的新手.. 我遇到 gsub 问题.. 我每次去我的商店页面列表时都会显示“未定义的方法 `gsub' for nil:NilClass”..

这是我的代码:

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

提前致谢

4

3 回答 3

18

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

于 2012-07-16T20:25:49.320 回答
4

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

所以,你会有这样的东西:

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

您可以在此处阅读有关安全导航运算符的更多信息:http: //mitrev.net/ruby/2015/11/13/the-operator-in-ruby/

于 2018-02-20T21:29:44.090 回答
3

这意味着search_val实际上是零。您可以通过打印 的值轻松验证这一点search_val

于 2012-07-16T05:43:38.470 回答