Ruby on rails heroku部署、日期时间和strftime存在问题
我无法将rails应用程序部署到Heroku。 我照常做,但这次我在控制台上发现了这些错误 我想知道它们是如何出现的,因为我甚至没有Ruby on rails heroku部署、日期时间和strftime存在问题,ruby-on-rails,datetime,heroku,strftime,Ruby On Rails,Datetime,Heroku,Strftime,我无法将rails应用程序部署到Heroku。 我照常做,但这次我在控制台上发现了这些错误 我想知道它们是如何出现的,因为我甚至没有gsub在这里使用 在我正常的生产环境中,它工作得很好,那么在这种情况下,我忘记考虑什么了 谢谢你的帮助 错误提示:(顺便说一下,数据库内容不是nil或类似的东西) 2012-11-29 17:14:18+0000为XXX开始获取“/锦标赛” TournamentsController#索引为HTML进行处理 布局/应用程序中的渲染锦标赛/index.html.er
gsub代码>在这里使用
在我正常的生产环境中,它工作得很好,那么在这种情况下,我忘记考虑什么了
谢谢你的帮助
错误提示:(顺便说一下,数据库内容不是nil或类似的东西)
2012-11-29 17:14:18+0000为XXX开始获取“/锦标赛”
TournamentsController#索引为HTML进行处理
布局/应用程序中的渲染锦标赛/index.html.erb(74.9ms)
在193ms内完成500个内部服务器错误
31:
33:
ActionView::Template::Error(2012-12-08 15:00:00 UTC:Time的未定义方法'gsub!'):
30:von
35:
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\u views\u tournaments\u index\u html\u erb\u 1016767371206226983\u 23066580'
29:
app/controllers/tournaments\u controller.rb:11:in'index'
32:
34:
它看起来像是锦标赛返回的对象。date
的类型是Time
,其中asDateTime.parse需要一个字符串。parse
方法的底层实现执行一个gsub传递的参数上的代码>。因此出现了错误
您有两种解决方案:
如果您总是从锦标赛.date
中获得时间
对象,那么您可以使用锦标赛.date.to_datetime
(尽管我认为您实际上不需要日期时间
对象。您可以将时间
对象用于strftime
)
如果不能保证使用Time
对象,则将字符串化对象传递给parse
,如下所示DateTime.parse(锦标赛.date.to)
我不知道这个代码在你本地的机器上是如何工作的。可能是因为两种设置中的ruby版本不同。我的答案是基于MRI 1.9.2。作为一般性评论,您需要将大量的逻辑从视图中移开,放入可以正确进行单元测试的方法中。这些类型的错误将不那么频繁,也更容易调试。好吧,我真的应该这样做,但这只会解决问题。它在我的本地机器上正常工作。
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>