Ruby 日志中的错误 -> ActiveRecord::RecordNotFound (找不到 'id'=1 的计划):



我对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"。

希望这会有所帮助!

最新更新