我希望用户注册该应用程序,但我在下面显示此错误,
ActionController::ParameterMissing in UsersController#show
param is missing or the value is empty: user
users_controller.rb
:
def show
@user = User.new(user_params)
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end

答案 0 :(得分:2)
当您在user_params
操作中调用show
方法时,需要user
参数存在于params
哈希中。但是,对于show
操作的相应请求,它并不存在。这就是你提到错误的原因:
param is missing or the value is empty: user
要解决您的问题,请将show
方法更改为:
def show
@user = User.find(params[:id])
end
这只是从id
哈希中抓取用户的params
,然后使用User.find
调用从数据库中找到该用户。
答案 1 :(得分:1)
这是因为你在show action时调用了user_params。 Normaly请求显示动作只有一个参数是用户的id。在这里你调用user_params它将搜索params对应的用户模型属性然后将它们转换为新方法,但它们不存在。因此它会给你带来错误。
我认为在show动作中你只会写:
def show
@user = User.find params[:id]
@new_user = User.new #if you need create 1 form at show view
end