我在迁移中定义了以下2个表
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :name
t.string :phone
t.string :email
t.string :address
t.string :resume
t.timestamps
end
end
end
Class CreateResumeSections < ActiveRecordMigration
def self.up
create_table :resume_sections do |t|
t.string :section_name
t.string :html
t.timestamps
end
end
end
我有以下2个模型
class User
has_many :resume_sections, :dependent => :destroy
attr_accessor :section_layout
after_save :save_sections
private
def save_sections
self.section_layout = ###Someother logic here that sets this variable
end
end
class ResumeSection
belongs_to :user
end
在我的users_controller中,我有以下代码
class UserController < ApplicationController
def create
@user = User.new(params[:user])
@user.save
@user.section_layout.each {|key,value|
rs = ResumeSection.new(:section_name => key, :html => value, :user => @user)
rs.save
}
end
end
在我看来,我有以下代码
<% @user.resume_sections.each do |section| %>
<%= section.section_name %>
<%= section.html %>
<% end %>
我在视图中看到Nil:NilClass的Undefined方法错误。表达式@ user.resume_sections没有向我返回我刚创建并保存在UsersController中的记录。相反,它返回零给我。当我检查数据库时,记录就在那里。
@ user.resume_sections表达式是否正确访问这些记录?
由于 保罗
答案 0 :(得分:3)
在我看来,你错过了迁移中的某些东西。 ResumeSection
需要integer
字段user_id
。只需创建一个包含类似内容的新迁移:
def change
add_column :resume_section, :user_id, :integer
end