2016-12-05 4 views
0

私はHerokuに問題があります。私はC9で正常に動作していますが、Herokuそれは私のログに次のエラーRubyログのエラー - > ActiveRecord :: RecordNotFound( 'id' = 1で計画が見つかりませんでした):

のActiveRecordを与える:: RecordNotFound(= 1 'ID' との計画を見つけることができませんでした)私のホームページに次のエラーが生じ

- >

あなたが探していたページは存在しませんt。

アドレスが誤って入力されているか、ページが移動している可能性があります。

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' 
に見られるように、ユーザーを保存するための宝石を考案使用しています

すべてが(できませんでしたmasterブランチからのGitHubにバックアップされ、それが再びマスターを経由してHerokuのにプッシュした後...それは、助けが:)

+2

C9データベースのデータは 'plans'テーブルにあり、Herokuでは利用できません。プロダクションDBにこれらのデータを作成する必要があります。 – dp7

答えて

2

あなたの計画表が空であるか、または他のIDで作成した計画は、あなたがC9からDBをエクスポートし、Heroku

にそれをインポートして、余分なメモとしてあなたがIDSに依存することはできませんする必要があり、id列が自動インクリメントでありますいくつかの飛行機を作成して後で削除した場合、新しい作成された計画は例としてid = 5で始まります。あなたは計画テーブルのためのプラン名またはその他のuniqの列を持っている場合

私の提案は、それを使用します。

Plan.find_by_name('plan_name').id 

かさえも使用します(場合には、あなたが自由な計画が常に最初に作成されていることを確認している)

Plan.order('id').first 
Plan.order('id').last 
3

のActiveRecord :: RecordNotFound歓迎されるであろう解決策を見つけることができません

明らかに 'ID' = 1)との計画を見つけ、あなたのデータベース

id = 1Planを持っているし、ハードコードされたIDを持つレコードを見つけることは悪い習慣ではありません。

new_user_registration_path(plan: Plan.find(1).id) 
また、あなたがあなたの制作に Plansを作成していることを確認してください:あなたは

new_user_registration_path(plan: 1) 

Plan.find(1).idと同じことを行うことができます

はあなた1だけ

OR

new_user_registration_path(plan: Plan.find_by_name('Premium').try(:id)) 

NOTEを返します。 db

+0

ええ、私は計画に変数を割り当てました、私はそれを見てハードコーディングを試してみましたが、問題のように見えなかったエラーの一部だったので、変数名に戻します:)。入力のThx。そして、私は確かに、私のdbが正しくこのファイルに新しいHerokuにマイグレーションされていません。 – Pieter

2

あなたのherokuデータベースをチェックしてください。おそらく、あなたの計画表は空です。

+0

これは私が "heroku run rails console"を使用し、Plan.allが空になったことを実証した私は間違ったコマンドを使用していると思いますが、 "heroku run rake db:migrate"を使用してデータベースを何度も移行しましたが、これはどうですか? – Pieter

+0

rake db:migrateは、dbスキーマの作成と更新のみを行います。デフォルトのデータをロードするには、seeds.rbを使い、rake db:seedを実行します。 – luckyruby

+0

助けのためのThx今atleast私は私の欠点が何だったか知っている: – Pieter

0

私は同じ問題を抱えていましたが、Ruby /レールの新機能であるため、私はHeroku dbに計画をどのように追加するのか分かりませんでした。上記のように皆によって言及されました。ついにそれを理解した。とても簡単!

私のような他のnoobsについては、ここでHerokuでテーブルを作成する方法があります。 (この状況で計画表)それが動作するかどうか

$ Heroku run rails console 
> Plan.create(name: 'basic', price: 0) 
> Plan.create(name: 'pro', price: 10) 

が次にチェックは:

> Plan.all 

これはあなたの計画とそれに対応する 'ID' をリストする必要があります。

希望すると便利です。

関連する問題