【问题标题】:undefined method `to_date' for nil:NilClass on Heroku AppHeroku App 上 nil:NilClass 的未定义方法“to_date”
【发布时间】:2017-03-29 11:41:30
【问题描述】:

我的 heroku 服务器上有 nil:NilClass 的错误未定义方法 `to_date' 但一切都在本地运行,我不知道如何修复它

我的助手,我称之为“to_date”

模块 BiensHelper

def sell_time(sell_date)
    time = Time.now.to_s
    time = time.to_date
    delai = time - sell_date.to_date
    delai.round
end

结束

我调用我的助手的视图

    <% @biens.each do |bien| %>
    <h3>
    <%= bien[:name] %> <br>
    <%= bien[:adress] %> <br>
    <%= bien[:bien_type] %> <br>
    <%= bien[:url] %> <br>
    <%= bien[:latitude] %> <br>
    <%= bien[:longitude] %> <br>
    Vendu il y a <%= sell_time(bien.sell_date) %> jours<br>
    <%= link_to "Modifier", edit_bien_path(bien), class: "btn btn-warning" %> <br>
    <%= link_to "X", bien_path(bien), method: :delete, class: "btn btn-danger" %> <br>
</h3>
<% end %>

【问题讨论】:

  • 您的错误表明sell_date 正在传递零值

标签: ruby-on-rails heroku activerecord


【解决方案1】:

您的错误显示sell_datedelai = time - sell_date.to_date 行传递零值

你可以忽略这样的错误

def sell_time(sell_date)
  if sell_date.present?
    delai = Date.today - sell_date.to_date
    delai.round
  end
end

还有

time = Time.now.to_s
time = time.to_date

这里你取Time.now,然后把它转换成to_date,你可以直接使用Date.today

【讨论】:

    【解决方案2】:

    您在这里遇到错误:

    delai = time - sell_date.to_date
    

    sell_date 对于您的记录而言为零。请检查 heorku 数据库。从您的控制台运行heroku run rails db

    或者你可以像heroku run rails console这样打开rails控制台。

    将代码更改为:

    def sell_time(sell_date)
      time = Time.now.to_s
      time = time.to_date
      if sell_date.present?
        delai = time - sell_date.to_date
        delai.round
      end
    end
    

    如果 sell_date 为 nil,函数会将卖出时间返回到当前时间。但在我看来,你应该修复 db.并将正确的值写入 db。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 2013-06-30
      相关资源
      最近更新 更多