Ruby on rails - ActionView 中的 Heroku 未定义方法错误



Heroku 日志显示以下错误:

ActionView::Template::Error (undefined method `accepted_answer_id' for #<Question:0x000000052fd1e0>)

作为背景,我有一个模型Questionhas_many答案。 Question还有一个列accepted_answer_id

未定义的方法错误是指 _question.html.erb 中的一行,其中用于自定义不同阴影背景中答案计数的显示

  <% if question.answers.count > 0 %> 
    <% if question.accepted_answer_id %>
        <div class="pickedanswer">
          <h4><%= question.answers.count %></h4>
        </div>
    <% else %>
        <div class="numanswer">
          <h4><%= question.answers.count %></h4>
        </div>
    <% end %>
  <% else %>
      <div class="noanswer">
        <h4><%= question.answers.count%></h4>
      </div>
  <% end %>

我认为可能会因为最初question.accepted_answer_id nil而引发错误......但考虑到我构建逻辑的方式,我不知道为什么它不能简单地遵循(因为它在开发中已经成功了(。

感谢您的帮助。

您的架构缺少该属性。如果代码在本地工作,则可能是手动添加了该列,或者迁移不在版本控制中。

您可以看到迁移的运行方式如下:

$ heroku run rake db:migrate:status --app app_name

这将显示您的任何迁移是否尚未运行。应将这些内容与本地迁移相匹配。你也许错过了一个?

运行db:push销毁远程数据库并将其替换为本地副本,充其量。一般来说,你应该使用pgbackups:restore来做这种事情(https://devcenter.heroku.com/articles/heroku-postgres-import-export(

我已经多次遇到这个问题,这些是我采取的步骤:

  1. 首先确保您已在 heroku 上迁移了数据库:

    heroku run rake db:migrate
    
  2. 确保数据库实际上是在 heroku 上迁移的:

    heroku pg:psql -a app_name
    d table_name
    
  3. 最后在 heroku 上重新启动应用程序:

    heroku restart
    

相关内容

  • 没有找到相关文章

最新更新