新しくインスタンス化する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のインスタンス上にある、ローカルで正常に動作します。
Heroku 'heroku run rake db:migrate'で移行を実行しましたか? – Leito
を実行してから、数秒間待つか、または 'heroku restart'を実行してください。実行中のdynoに新しいスキーマ変更が表示されるようにpostgresキャッシュをリフレッシュする必要がある場合があるからです。 – DiegoSalazar
@Leito私がPostgresのテーブルをチェックしていて、それが私が期待していたフィールドを持っていたことを示しています – 92tonywills