我对Heroku有问题,我有一个在C9上工作正常的项目,但是当我推到Heroku时,它给了我日志中的以下错误
activerecord :: record notfound(找不到'id'= 1的计划)
导致我的主页上的以下错误 ->
您要寻找的页面不存在。
您可能已经误解了地址或页面可能已移动。
home.html.erb
<div class="row">
<div class="col-md-6">
<div class="well">
<h3 class="text-center">Basic membership</H3>
<h4>Hier inschrijven voor alle leden van het gezin.</h4>
<br />
<%= link_to "Sign up free", new_user_registration_path(plan: Plan.find(1).id), class: 'btn btn-primary btn-lg btn-block' %>
</div>
</div>
<div class="col-md-6">
<div class="well">
<h3 class="text-center">Premium membership</h3>
<h4>Niet gebruiken dit is een test object.</h4>
<br />
<%= link_to "Sign up for premium plan", new_user_registration_path(plan: Plan.find(2).id), class: 'btn btn-success btn-lg btn-block' %>
</div>
pages_controller
class PagesController < ApplicationController
def home
@basic_plan = Plan.find(1)
@pro_plan = Plan.find(2)
end
def about
end
end
我正在使用设计宝石来存储用户,如以下片段
所示Rails.application.routes.draw do
devise_for :users
resources :contacts
get '/about' => 'pages#about'
root 'pages#home'
一切都从主人分支备份到GitHub,然后再次通过大师推到Heroku ...它找不到解决方案,欢迎帮助:)
activerecord :: record notfound(找不到'id'= 1的计划)
显然,数据库中的Plan
没有CC_1
使用硬编码ID查找记录是不好的练习:
new_user_registration_path(plan: Plan.find(1).id)
您可以使用
做同样的事情new_user_registration_path(plan: 1)
Plan.find(1).id
将返回您1
或
new_user_registration_path(plan: Plan.find_by_name('Premium').try(:id))
注意:还确保您已经在生产DB
Plans
您的计划表可以是空的,也可以使用任何其他ID创建的计划,您应该从C9
导出DB并将其导入Heroku
,作为额外的注释,您不能依赖ID,id
列是自动增量,如果您创建了一些飞机并在此之后删除,则新创建的计划可能以ID = 5开头,并且如果您强制强制您仍然不应该这样做的ID。
如果您有计划名称或其他任何UNIQ列以使用它:
Plan.find_by_name('plan_name').id
或什至使用:(如果您确定自己始终首先创建免费计划)
)Plan.order('id').first
Plan.order('id').last
检查您的Heroku数据库。您的计划表很可能是空的。
我遇到了同样的问题,但是对ruby/rails来说是如此新,我不知道如何将计划添加到Heroku db ..正如上面的所有人:时间单击stackoverflow,我终于弄清楚了。如此简单!
对于像我这样的其他任何菜鸟,这是您如何在Heroku创建桌子的方式。(在这种情况下的计划表)
$ Heroku run rails console
> Plan.create(name: 'basic', price: 0)
> Plan.create(name: 'pro', price: 10)
然后检查它是否有效:
> Plan.all
这应该列出您的计划及其相应的" ID"。
希望这会有所帮助!