私はちょっとした問題があります。私は会社に関連する新しいプロジェクトを作成し、ログインしたユーザー(current_user)によって作成されたプロジェクトコントローラを持っています。ここでは作成アクションです。定義されていないメソッド `email 'をnilに修正する方法:NilClass with devise
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
次のエラーでプロジェクトショーのページへのリダイレクトに上記のコードブレーク:
undefined method `email' for nil:NilClass
%b
Created by
= @project.user.email # <-- errors, not sure why
だから私は他のすべては、そのプロジェクトを作成したユーザーを除いて保存されて知っています。もし私が.mergeを取り除いたら!私の作成方法では2つのステップでそれを行うので、それは完全にうまくいきます。
def create
@project = @company.projects.build(params[:project])
@project.user = current_user
....
どのようにマージを使用してください!動作しませんか?私はオブジェクトにユーザーをマージすると完全に良いと思っていただろう。これについては正しい(または好ましい)方法は何ですか?
ありがとうございました