【问题标题】:Ruby - NoMethodError when subtracting datesRuby - 减去日期时出现 NoMethodError
【发布时间】:2017-05-08 15:28:16
【问题描述】:

Ruby 新手 - 我正在尝试定义一个名为 days_to_exp 的变量,该变量将计算易腐烂食品到期前的天数。我在序列化程序中放置了以下方法:

class ItemSerializer < ActiveModel::Serializer
attributes :id, :food_name, :purchase_date, :exp_date, :store_name, :quantity, :purchased, :days_to_exp

  def days_to_exp
    today = Time.now.utc.to_date
    exp_dte = exp_date
    (exp_dte - today).to_i
  end
end

错误:NameError(未定义的局部变量或方法 `exp_date' for #):

谁能帮我理解为什么会发生这个错误?谢谢!

【问题讨论】:

  • 去掉 : 获取值
  • 你打错了。应该是exp_dte = exp_date。阅读错误信息。 Symbol这个词真的很突出...
  • 尝试使用exp_date 而不是:exp_date
  • 谢谢!对不起,我应该意识到这一点。我已经编辑了原始帖子。不过现在出现新错误...

标签: ruby-on-rails ruby


【解决方案1】:

exp_date 是模型的一个属性。所以,你可以写:

object.exp_date - today

类顶部的行,其中指出:

attributes :exp_date

只是定义属性——它会为它创建 getter/setter 方法。不要将Symbol 与变量/方法混淆。

【讨论】:

  • 谢谢!是的,我肯定将符号与变量/方法混为一谈。我试图编辑帖子并反映您的答案,但我现在收到一个新错误...
猜你喜欢
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多