5

私はRubyonRailsの初心者です。gsubに問題があります。ストアページのリストにアクセスするたびに、「undefined method `gsub'for 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

前もって感謝します

4

3 に答える 3

18

.to_s文字列メソッドを使用している場合は、これを行うことをお勧めします。

于 2012-07-16T20:25:49.320 に答える
4

&で演算子を使用できますsearch_val。これにより、チェックを追加to_sしたり、文字列を文字列に変換したりすることなく、nullポインタの例外を回避できます。

したがって、次のようなものになります。

@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 に答える