【发布时间】:2016-11-15 03:48:30
【问题描述】:
在尝试为新实例化的 ActiveRecord 模型显示表单时出现以下错误。
ActionView::Template::Error (undefined method `title' for
#<Project id: nil, created_at: nil, updated_at: nil>):
控制器中的方法很简单
# GET /projects/new
def new
@project = Project.new
end
看起来对象只有基本的 ActiveRecord 访问器,但应该有标题和其他一些。我pg:psql'ed 进入我的数据库并检查了结构并且它们在那里,所以迁移看起来已经完成。
问题是从表单访问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 是的,运行了迁移,这就是为什么我提到我检查了 Postgres 表并且它具有我期望的字段
-
你没有提到整个专栏(以“heroku”开头)所以我不确定。
标签: ruby-on-rails ruby activerecord heroku