【发布时间】:2014-06-18 13:55:47
【问题描述】:
例如,我有一个用户和一个地址,关系如下:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_one :address
end
class Address< ActiveRecord::Base
belongs_to :user
end
现在当我创建一个地址对象时,我希望能够通过 current_user id 并将其保存到地址模型中,所以在我的控制器中我有
before_filter :authenticate_user!
def new
@address= current_user.address.new
end
def create
@address= current_user.address.new(address_params)
if @address.save
redirect_to root_path, notice: 'Address Successfully Created'
else
render action: 'new'
end
end
private
def address_params
params.require(:address).permit(:id, :user_id, :add_1, :add_2, :add_3)
end
我目前无法访问新操作,因为我遇到的错误是
undefined method `new' for nil:NilClass
我错过了什么?
【问题讨论】:
-
你试过
build而不是new吗? -
仍然出现同样的错误(未定义的方法构建),是不是只有新操作让我失望了?
-
我认为 create 会有相同的结果。
标签: ruby ruby-on-rails-4 devise associations