2016-12-05 35 views
0

我有一個問題與Heroku,我有一個項目,在C9工作正常,但當我推到Heroku它給了我在日誌中錯誤在Ruby日誌 - > ActiveRecord :: RecordNotFound(無法找到計劃與'id'= 1):

的ActiveRecord :: RecordNotFound以下錯誤

導致在我的主頁下面的錯誤(無法與 'ID'= 1找到計劃) - >

您正在尋找的網頁不存在exis噸。

您可能錯誤輸入了地址或頁面可能已移動。

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 ...它無法找到解決方案,將受到歡迎:)

+2

C9數據庫將在'計劃「表中具有Heroku不可用的數據。您需要在生產數據庫中創建這些數據。 – dp7

回答

2

你的計劃表可能是空的或與任何其他ID創建的計劃,你應該從C9導出數據庫並將其導入Heroku

,並作爲額外的音符,你不能依靠IDS,id列是自動增量如果你創建了一些飛機並在之後刪除,那麼新創建的計劃可能以id = 5開始,如果你甚至強制編號,你仍然不應該這樣做。

我的建議,如果你有一個計劃名稱或計劃表的任何其他uniq的列中使用它:

Plan.find_by_name('plan_name').id 

甚至使用:(如果你確信你免費計劃總是首先創建)

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

ActiveRecord :: RecordNotFound(Could not發現計劃與 'ID'= 1)

顯然,你沒有Planid = 1在你的數據庫

和尋找紀錄硬編碼的ID是不好的做法:

new_user_registration_path(plan: Plan.find(1).id) 

你可以做同樣的

new_user_registration_path(plan: 1) 

Plan.find(1).id將返回1

OR

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

注:另外,還要確保你有你的生產創造Plans db

+0

是的,我給計劃分配了變量,我只是試着通過硬編碼來看到這是錯誤的一部分,似乎沒有問題會改變回變量名:)。 Thx爲輸入。我確實沒有將我的數據庫正確地遷移到Heroku,對這個東西很新... – Pieter

2

檢查您的heroku數據庫。最有可能的是,你的計劃表是空的。

+0

好吧,這似乎是我使用「heroku run rails console」的情況,並檢查了Plan.all出現了空洞,真的不明白這是怎麼回事,雖然我多次遷移我的數據庫,使用「heroku運行rake db:migrate」我想我正在使用錯誤的命令? – Pieter

+0

rake db:migrate只會創建並更新您的數據庫模式。要加載默認數據,您需要使用seeds.rb並運行rake db:seed。 – luckyruby

+0

Thx幫助現在至少我知道我的錯是什麼:) – Pieter

0

我有同樣的問題,但是對於ruby/rails來說是如此的新鮮,我不知道如何將計劃添加到Heroku分貝中。如上所述,大家:P經過大量的時間點擊通過stackoverflow後,我終於搞清楚了。很簡單!

對於像我這樣的其他noob,這裏是你如何在Heroku中創建表格。 (在這種情況下計劃表)

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

然後檢查是否正常工作:

> Plan.all 

這應該列出你的計劃和其相應的「身份證」。

希望這會有所幫助!

相關問題