nil的未定义方法`to_date':Heroku App上的NilClass

时间:2017-03-29 11:41:30

标签: ruby-on-rails heroku activerecord

我的错误未定义方法`to_date'为nil:我的heroku服务器上的NilClass但是一切都在本地工作,我不知道我怎么能解决它

我的助手,我称之为“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 %>

2 个答案:

答案 0 :(得分:0)

你在这里收到错误:

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为零,则函数会将卖出时间返回到当前时间。但在我看来你应该修复数据库。并将正确的值写入db。

答案 1 :(得分:0)

您的错误显示sell_date在第delai = 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