部署到 Heroku 后评论不起作用

Comments not working once deployed to Heroku

我最近向 Heroku 部署了一个应用程序,但我的评论有问题。它在开发中运行良好,但在生产中出现以下错误。看起来 Heroku 我的 comments.index.html.erb 文件有问题(也包含在下面)有人能指出我正确的方向吗?它说 comments.recipe_id 不存在,但我不明白为什么它在开发中会很好但一旦部署就不行了?谢谢!

2020-09-22T03:42:18.459074+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf] ActionView::Template::Error (PG::UndefinedColumn: ERROR:  column comments.recipe_id does not exist
2020-09-22T03:42:18.459075+00:00 app[web.1]: LINE 1: SELECT "comments".* FROM "comments" WHERE "comments"."recipe...
2020-09-22T03:42:18.459076+00:00 app[web.1]: ^
2020-09-22T03:42:18.459076+00:00 app[web.1]: HINT:  Perhaps you meant to reference the column "comments.recipe".
2020-09-22T03:42:18.459077+00:00 app[web.1]: ):
2020-09-22T03:42:18.459077+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf]      5: <% end %>
2020-09-22T03:42:18.459078+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf]      6:
2020-09-22T03:42:18.459078+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf]      7: <ul>
2020-09-22T03:42:18.459079+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf]      8: <% @comments.each do |c|%>
2020-09-22T03:42:18.459081+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf]      9:   <li><%= c.user.username%> says "<%= c.content%>" about this recipe: <strong><%= link_to c.recipe.title, recipe_path(c.recipe_id) %></strong></li>
2020-09-22T03:42:18.459082+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf]     10:
2020-09-22T03:42:18.459082+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf]     11: <% end %>
2020-09-22T03:42:18.459082+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf]
2020-09-22T03:42:18.459083+00:00 app[web.1]: [0304f2e5-aabb-48a2-8038-734c995042cf] app/views/comments/index.html.erb:8
2020-09-22T03:42:18.459389+00:00 heroku[router]: at=info method=GET path="/recipes/1/comments" host=myrailsrecipeapp.herokuapp.com request_id=0304f2e5-aabb-48a2-8038-734c995042cf fwd="174.97.92.123" dyno=web.1 connect=0ms service=12ms status=500 bytes=1827 protocol=https```

comments/index.html.erb

<% if @recipe %>
  <h1>Comments for <%= @recipe.title%></h1>
<% else %>
  <h1>All Comments</h1>
<% end %>

<ul>
  <% @comments.each do |c|%>
    <li><%= c.user.username%> says "<%= c.content%>" about this recipe: <strong><%= link_to c.recipe.title, recipe_path(c.recipe_id) %></strong></li>
  <% end %>
</ul>

部署到 heroku 后,您必须进行迁移。希望您之前对 gem 文件进行了更改。 Heroku 使用 postgres,开发使用 sqlite。如果您之前没有进行更改,它将不起作用。

在生产组中你必须添加 postgres gem:

group :production do
  gem 'pg'
end

然后 运行 捆绑安装——没有生产。现在您可以部署了。完成后再次转到您的终端并输入:

heroku run rake db:migrate

如果没有其他错误,现在它应该可以工作了