2016-07-12 4 views
0

新しくインスタンス化するActiveRecordモデルのフォームを表示しようとすると、次のエラーが表示されます。Herokuで移行後にActiveRecordモデルが完全にインスタンス化されない

ActionView::Template::Error (undefined method `title' for 
     #<Project id: nil, created_at: nil, updated_at: nil>): 

コントローラのメソッドは、オブジェクトが、基本的なActiveRecordのアクセサを持っているように見えます単に

# GET /projects/new 
def new 
    @project = Project.new 
end 

ですが、タイトルと他の人の数を持っている必要があります。私はpg:psql 'をデータベースに挿入して構造をチェックし、そこにあるので、移行が完了したように見えます。 フォームからtitleにアクセスすると、上記のエラーがスローされます。

マイ移行:(エラーがスローされます)

class AddTitleBodyToProjects < ActiveRecord::Migration 
    def change 
     add_column :projects, :logo_url, :string 
     add_column :projects, :title, :string 
     add_column :projects, :body, :text 
     add_column :projects, :web_url, :string 
     add_column :projects, :github_url, :string 
     add_column :projects, :appstore_url, :string 
     add_column :projects, :playstore_url, :string 
    end 
end 

マイHAMLテンプレート:

.admin-form.work-form 
= form_for @project, url: { action: @action, id: @project }, class: 'form-horizontal' do |f| 
    .form-group.row 
     = f.label :title, class: 'col-sm-2 control-label' 
     .col-sm-9 
      = f.text_field :title, class: 'form-control' 
    .form-group.row 
     = f.label :body, class: 'col-sm-2 control-label' 
     .col-sm-9 
      = f.text_area :body, class: 'form-control' 
    .form-group.row 
     = f.label :logo_url, class: 'col-sm-2 control-label' 
     .col-sm-9 
      = f.text_field :logo_url, class: 'form-control' 
    .form-group.row 
     = f.label :web_url, class: 'col-sm-2 control-label' 
     .col-sm-9 
      = f.text_field :web_url, class: 'form-control' 
    .form-group.row 
     = f.label :github_url, class: 'col-sm-2 control-label' 
     .col-sm-9 
      = f.text_field :github_url, class: 'form-control' 
    .form-group.row 
     = f.label :appstore_url, class: 'col-sm-2 control-label' 
     .col-sm-9 
      = f.text_field :appstore_url, class: 'form-control' 
    .form-group.row 
     = f.label :playstore_url, class: 'col-sm-2 control-label' 
     .col-sm-9 
      = f.text_field :playstore_url, class: 'form-control' 
    .form-group.row 
     .col-sm-offset-2.col-sm-9 
      = f.submit 'Save', class: 'btn btn-default' 

それはすべて、それだけで、それはエラーをスローHerokuのインスタンス上にある、ローカルで正常に動作します。

+3

Heroku 'heroku run rake db:migrate'で移行を実行しましたか? – Leito

+2

を実行してから、数秒間待つか、または 'heroku restart'を実行してください。実行中のdynoに新しいスキーマ変更が表示されるようにpostgresキャッシュをリフレッシュする必要がある場合があるからです。 – DiegoSalazar

+0

@Leito私がPostgresのテーブルをチェックしていて、それが私が期待していたフィールドを持っていたことを示しています – 92tonywills

答えて

0

ように再び移行し、再起動して生成されたオブジェクトのタイトル欄が表示されない場合@ diego.greyrobotはキャッシングの問題だと言い、heroku restartを実行して(そして数分待って)それを修正したようだ。

1

一度オープンHerokuのコンソールと、次のコマンドにより、モデルの列を確認し、

heroku run rails c 
    Project.first 

あなたはHerokuの

heroku run rake db:migrate 
    heroku restart 
+0

私が質問したところでは、私は移行を実行して、データベースのテーブル構造 – 92tonywills

関連する問題