gpt4 book ai didi

ruby-on-rails - Rails 格式化日期并减去

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:26 25 4
gpt4 key购买 nike

我正在尝试从帐户到期日期中减去今天的日期以获得剩余天数,方法是:

<% @accounts.each do |account| %>
<tr>
<td><%= account.name %>&nbsp;</td>
<td><%= account.email %>&nbsp;</td>
<td><%= (account.expiration.try(:to_date) - Date.today).to_i %></td>

我收到此错误:undefined method '-' for nil:NilClass

在这一行:<td><%= (account.expiration.try(:to_date) - Date.today).to_i %></td>

知道为什么这不起作用吗?

最佳答案

你得到的是:

nil - Date.today
NoMethodError: undefined method `-' for nil:NilClass

当您使用 try 时,它不会引发任何异常,但如果被访问的对象不响应调用的方法,则返回 nil。在你的情况下,它给你 nil,你不能将 - 应用于 nil 对象。

您可以将这样的逻辑移至助手,检查属性是否为 nil 并返回默认值,否则执行操作:

# app/helpers/application_helper.rb
def expiration_substraction(account_expiration)
return <default_value> if account_expiration.nil?
(account_expiration.to_date - Date.today).to_i
end

这应该适用于您正在处理的 View :

<%= expiration_substraction(account.expiration) %>

关于ruby-on-rails - Rails 格式化日期并减去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48286980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com