[英]How do I fix undefined method `email' for nil:NilClass with devise
我有一个奇怪的问题。 我有一个项目控制器,在其中创建与公司相关的新项目并由登录用户(current_user)创建,这是我的创建操作。
def create
@project = @company.projects.build(params[:project].merge!(:user => current_user))
#@project.user = current_user
if @project.save
#debugger
flash[:notice] = "Project has been created."
redirect_to [@company, @project]
else
flash[:alert] = "Project has not been created."
render :action => "new"
end
end
上面的代码在重定向到项目显示页面时中断,出现以下错误:
nil:NilClass的未定义方法`email'
%b
Created by
= @project.user.email # <-- errors, not sure why
因此,我知道除了创建该项目的用户之外,其他所有内容都在保存。 如果我删除.merge! 在我的create方法中,并分两步进行,它工作得很好,就像这样:
def create
@project = @company.projects.build(params[:project])
@project.user = current_user
....
为什么要使用合并! 将无法正常工作? 我本以为将用户合并到对象中会很好。 正确的(或首选的)方法是什么?
谢谢
我知道了。 这是一个大规模任务问题。 我的代码中有attr_accessible :title, :description, :account_number, :account_executive
,将其禁用以允许批量分配,并且工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.