0

我无法将我的 rails 应用程序部署到 Heroku。我像往常一样做了,但这次我在控制台上遇到了这些错误。

我想知道它们是如何出现的,因为我什至没有gsub!在这里使用过。

在我正常的生产环境中它工作得很好,那么在这种情况下我忘了考虑什么?

谢谢你的帮助!

错误提示:(顺便说一下,数据库内容不是零或类似的东西)

Started GET "/tournaments" for XXX at 2012-11-29 17:14:18 +0000
Processing by TournamentsController#index as HTML
  Rendered tournaments/index.html.erb within layouts/application (74.9ms)
Completed 500 Internal Server Error in 193ms

    31:     <td><%= raw tournament.address.split(", ").join("<br />") %></td>
    33:     <td><%= DateTime.parse(tournament.date).strftime("%H:%M") %></td>
ActionView::Template::Error (undefined method `gsub!' for 2012-12-08 15:00:00 UTC:Time):
    30:     <td><%= tournament.place %> von <%= tournament.participants %></td>
    35:     <td><%= link_to 'Show', tournament %></td>
  app/views/tournaments/index.html.erb:32:in `block in _app_views_tournaments_index_html_erb___1016767371206226983_23066580'
  app/views/tournaments/index.html.erb:26:in `each'
  app/views/tournaments/index.html.erb:26:in `_app_views_tournaments_index_html_erb___1016767371206226983_23066580'
    29:     <td><%= tournament.user.name %></td>

  app/controllers/tournaments_controller.rb:11:in `index'
    32:     <td><%= DateTime.parse(tournament.date).strftime("%d.%m.%Y") %></td>
    34:     <td><%= tournament.kind %></td>
4

1 回答 1

0

看起来返回的对象tournament.date是 type Time,其中DateTime.parse需要一个字符串。该parse方法的底层实现对gsub!传递的参数执行 a 。因此错误。

你有两个解决方案:

  1. 如果你总是Time从那里得到一个对象,tournament.date你可以使用tournament.date.to_datetime(虽然我不认为你真的需要一个DateTime对象。你可以使用Time对象strftime

  2. 如果你不能保证一个Time对象,那么将字符串化对象传递给parse这样DateTime.parse(tournament.date.to_s)

PS:我不知道这段代码在你的本地机器上是如何为你工作的。可能是因为两种设置中的 ruby​​ 版本不同。我的答案基于 MRI 1.9.2。

于 2012-11-29T18:56:01.963 回答