0

RailsアプリケーションをHerokuにデプロイするのに問題があります。いつもと同じようにやりましたが、今回はコンソールでこれらのエラーが発生しました。

ここでは使ったことがないので、どうやって見えるのかしらgsub!

私の通常の本番環境では問題なく動作しましたが、この場合、何を考えるのを忘れましたか?

ご協力いただきありがとうございます!

エラープロンプト:(ちなみに、データベースのコンテンツはnilなどではありません)

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によって返されるオブジェクトはタイプのTimeように見えますがDateTime.parse、文字列が必要です。parseメソッドの基礎となる実装は、gsub!渡された引数に対してを実行します。したがって、エラー。

2つの解決策があります:

  1. 常にTimeオブジェクトを取得する場合はtournament.date、を使用できますtournament.date.to_datetime(ただし、実際にはオブジェクトが必要だとは思いません。オブジェクトをにDateTime使用できます)Timestrftime

  2. オブジェクトが保証されていない場合はTime、文字列化されたオブジェクトをparseこのように渡しますDateTime.parse(tournament.date.to_s)

PS:このコードがローカルマシンでどのように機能したかわかりません。2つのセットアップでルビーのバージョンが異なることが原因である可能性があります。私の答えはMRI1.9.2に基づいています。

于 2012-11-29T18:56:01.963 に答える