由于像这样的一些小问题,我真的很沮丧。
我有一个名为timelines
的模型。在它是一个日期时间列,但我传递数据的javascript只期望一个日期。所以我想在将模型对象传递给视图之前添加一个新字符串。这似乎不可能。
首先,我从数据库中收集数据并将其放入实例变量中:
@timeline = Timeline.where(token: params[:token]).first
然后我尝试添加这样的变量:
@timeline.birthday = "1/1/2000"
我收到错误消息:
undefined method birthday= for #<Timeline:0x00000105add0d0>
我猜这是因为birthday
不是我数据库中的列。我知道它不是,我不在乎它不在我的数据库中。我只想添加到我的变量上。这可能吗?
答案 0 :(得分:2)
您需要添加访问者方法才能获得/设置生日。但不会坚持下去。
class Timeline
attr_accessor :birthday
end
您似乎遇到的潜在问题(“javascript期待别的东西”)可以通过几种方式解决。例如Presenter模式。或者使用ActiveModel Serializers。
这将允许您保持模型不变,并在渲染时将数据转换为客户端期望的格式。
答案 1 :(得分:0)
您可以使用以下命令将原始日期时间列转换为日期:
your_column_name.strftime("%d/%m/%y")