我是新手上的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
提前致谢
答案 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/