大家好,我正在使用 javascript/html/css 前端和 rails 后端處理登錄頁面。因此,當單擊前端的注冊按鈕時,我正在向 rails 中的創建操作發出 POST 請求,并傳遞用戶名、密碼和密碼確認資訊。我在創建操作中放置了一個byebug來查看引數,它看起來像這樣
#<ActionController::Parameters {"username"=>"ray",
"password"=>"1234",
"password_confirmation"=>"1234",
"controller"=>"users",
"action"=>"create",
"user"=>#<ActionController::Parameters {"username"=>"ray"} permitted: false>} permitted: false>
我嘗試保存用戶,但由于某種原因我無法保存用戶,因為我的 user_params 方法沒有回傳密碼和 password_confirmation。這就是我的 UsersController 的樣子。
class UsersController < ApplicationController
def create
user = User.new(user_params)
if user.save
session[:user_id] = user.id
render json: {
status: 200,
user: user
}
else
render json: {
status: 401,
message: "Failure!"
}
end
end
private
def user_params
byebug
params.require(:user).permit(:username, :password, :password_confirmation)
end
end
我想我不明白的是為什么只插入用戶名。
uj5u.com熱心網友回復:
您的傳入引數如下所示:
{
"username" => "ray",
"password" => "1234",
"password_confirmation" => "1234",
"user" => { "username" => "ray" }
}
但require在你的user_params:
params.require(:user).permit(:username, :password, :password_confirmation)
正在查看user這些引數中的 ,然后permit查找username, password, ... 中的user。所以user_params正在尋找這樣的輸入:
{
"user" => {
"username" => "ray",
"password" => "1234",
"password_confirmation" => "1234"
}
}
因此,要么修復您的前端以發送與"user"上述正確嵌套的資料,要么修復user_params以查找頂級的所有內容:
params.permit(:username, :password, :password_confirmation)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394831.html
