无法使用设计的新模型

时间:2012-12-31 17:24:02

标签: ruby-on-rails devise controller

我的应用程序中有2个模型(使用rails 3.2.5)

1)用户(来自设计)

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me

  # attr_accessible :title, :body
  has_many :profiles
end

2)个人档案。

class Profile < ActiveRecord::Base

  belongs_to :user
  attr_accessible :description, :name, :product, :image, :price
  mount_uploader :image, ImageUploader
  validates_presence_of :name, :product, :image, :price
end

一个用户有很多个人资料。 目标:我想在登录时只显示与每个用户相关的个人资料。

通过阅读rails文档,我们可以通过(下面的代码)为用户创建新的配置文件,但这会产生错误 “nil的未定义方法`Profile':NilClass”

有人可以帮我定义我的控制器索引,显示,新建,编辑,创建,更新,销毁或向我展示一个,我可以为所有人做。

def new
  @profile = @user.Profile.new

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @profile }
  end
end

1 个答案:

答案 0 :(得分:0)

您收到此错误是因为@user未初始化且等于nil,因此没有名为profile的方法,您应该使用current_user设备帮助程序来获取当前用户@user = current_user