Ruby on rails ActionController::UsersController中的参数缺失#显示
我希望用户注册到应用程序,但我得到下面显示的错误Ruby on rails ActionController::UsersController中的参数缺失#显示,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我希望用户注册到应用程序,但我得到下面显示的错误 ActionController::ParameterMissing in UsersController#show param is missing or the value is empty: user users\u controller.rb: def显示 @user=user.new(用户参数) 结束 def新 @user=user.new 结束 def创建 @user=user.new(用户参数) 如果@user.save fla
ActionController::ParameterMissing in UsersController#show
param is missing or the value is empty: user
users\u controller.rb
:
def显示
@user=user.new(用户参数)
结束
def新
@user=user.new
结束
def创建
@user=user.new(用户参数)
如果@user.save
flash[:success]=“欢迎使用示例应用!”
将_重定向到@user
其他的
呈现“新”
结束
结束
私有的
def用户参数
参数require(:user).permit(:name,:email,:password,:password\u confirmation)
在show
操作中调用user\u params
方法时结束,该操作要求user
参数出现在params
散列中。但是,对于show
操作的相应请求,它实际上并不存在。这就是为什么会出现上述错误:
param is missing or the value is empty: user
要解决问题,请将show
方法更改为:
def show
@user = User.find(params[:id])
end
这只是从params
散列中获取用户的id
,然后使用user.find
call从数据库中找到该用户。这是因为您在show action中调用了user\u params。显示操作的正常请求只有一个参数是用户id。在这里调用user_params,它将搜索对应于用户模型属性的参数,然后将它们转换为新方法,但它们不存在。因此,它会给您带来错误。
我认为在表演中你只会写:
def秀
@user=user.find参数[:id]
@new_user=user.new#如果需要在show view中创建一个表单
结束
UsersController#show”内容在哪里?我打赌你在你的UsersController#show
中的某个地方调用了user\u params
。是的,我在UsersController#showawesome中调用了user\u params方法!很高兴这有帮助:)