Rails API - ArgumentError:错误的参数数量-当试图分配参数[:id]给实例变量



这绝对是一个简单的问题,但它给了我一段艰难的时间,这可能是学习ruby概念的好方法。

我在set_user方法上得到一个ArgumentError: wrong number of arguments (given 0, expected 1),它简单地从url获取参数并将其分配给一个变量。

我能够在控制台上打印到参数,当我调试时,我也尝试手工使用值本身,我仍然得到错误。

我错过了什么概念?我使用ruby 2.7.1和rails 6

"trace": "app/controllers/api/v1/users_controller.rb:27:in 'update'"

module Api
module V1
require 'authenticate_user'

class UsersController < ApplicationController
include AuthenticateUser

before_action :authenticate_user
before_action :set_user, only: [:show, :update, :destroy]

def update
if @user.update
json_response(UsersSerializer.new([@user], includable_params).as_json)
else
error_response(@user.errors, 422)
end
end
def destroy
@user.destroy!
head :no_content
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password)
end
def set_user
@user = User.find(params[:id])
end

end
end
end  

您的问题似乎不在您的set_user上,原因是您没有将任何参数传递给update方法。您的更新操作应该如下所示:

def update
if @user.update(user_params) # <-- here was the problem
json_response(UsersSerializer.new([@user], includable_params).as_json)
else
error_response(@user.errors, 422)
end
end

相关内容

  • 没有找到相关文章

最新更新