ror4表单中的第一个参数不能包含nil或为空

当我点击编辑时我得到:表格中的第一个参数在bets / app / views / users / _form.html.erb中不能包含nil或为空

用户/ _form

  

prohibited this user from being saved:





在users_controller中

 class UsersController < ApplicationController def new @user = User.new end def create @user = User.new(user_params) if @user.save flash[:notice] = "You have signed up successfully." redirect_to posts_path else render :new end end def show @user=User.find(params[:id]) end def update if @user.update(user_params) flash[:notice] = "Profile has been updated" redirect_to @user else flash[:alert] = "Profile has not been updated" render 'edit' end end def edit end def destroy @user = User.find(params[:id]) @user.destroy flash[:notice] = "Post has been destroyed." redirect_to posts_path end private def user_params params.require(:user).permit(:name,:password,:password_confirmation, :email) end end 

在模型用户中

 class User < ActiveRecord::Base has_secure_password end 

在视图/编辑

 

Edit Profile

在视图/显示

 

Profile Page for

Email:

有什么问题,我该如何解决? ps:是rails 4

您应该在edit操作中设置@user实例变量:

 def edit @user = User.find(params[:id]) end 

您遇到此错误的原因是您将@user实例变量作为参数传递给form_for 。 此变量的计算结果为nil ,因为您没有在edit操作中设置它。

顺便说一下,你在update操作中有类似的错误 – 我很确定如果你调用它会崩溃(“未定义的方法updatenil ”)。 你应该插入行

 @user = User.find(params[:id]) 

update操作的顶部。