1

私のアプリケーション ヘルパーには、かなり一般的なヘルパー メソッドがあります。

module ApplicationHelper
    def quid(num)
        number_to_currency (num / 100.0), unit: "£" 
    end 
end

しかし、私のアプリケーションは 'undefined method `/' for nil:NilClass' エラーをスローし続けます。

number_to_currency (num) を出力しても問題はありません。 / * - + のような演算子を入れようとしたときにのみ、このエラーが発生します。

これは今日まで正常に機能していましたが、エラーが発生するのは製品インデックス ビューのみです。

何が悪いのかわからない、誰か説明してくれる?私は困惑しています!

アップデート:

商品インデックス ビューのコードは次のとおりです。

    <% @products.each do |product| %>

        <h3><%= product.title %></h3>
        <div id="link_text"><%= link_to "See more", product %></div>
        <%= image_tag(product.avatar.url(:medium)) %><br/>
        <%= product.description %><br />
        <%= quid product.price_in_pence %>

    <% end %>

price_in_pence は整数ですが、100.00 を 100 に変更しても問題はないと思います。num が何らかの理由で nil を返しているためだと思います。

4

1 に答える 1

1

num変数がnil場合によってはあるため、エラーが発生します。number_to_currency(nil)ヘルパーは次のように実装されているため、機能します。

def number_to_currency(number, options = {})
  return unless number
  ...
end

ソース: http://apidock.com/rails/ActionView/Helpers/NumberHelper/number_to_currency

ほら、nilすぐに戻るので、ここでは害はありません。

ただし、関数はnil / 100.0最初に実行を試みます。エラーが示すように、/メソッドは で定義されていませんnil

おそらく、特別なnil治療が必要な場合やnil、ヘルパーに与えられた場合にケースを探す場合があります。

于 2013-07-02T19:58:54.987 に答える