![](/img/trans.png)
[英]ActionController::ParameterMissing - param is missing or the value is empty: user:
[英]ParameterMissing - param is missing or the value is empty: user
我需要更改用戶類型。 通過STI完成。
單擊該鏈接將傳遞參數:type。
我的模特:
class User < ApplicationRecord
class Admin < User
class Seller < User
class Guest < User
查看
tbody
- @users.each do |user|
tr
td = user.email
td = user.type
td = link_to "admin", edit_user_path(user, type: 'Admin')
td = link_to "guest", edit_user_path(user, type: 'Guest')
td = link_to "seller", edit_user_path(user, type: 'Seller')
的routes.rb
resources :users
resources :admins, controller: :users, :type => "Admin"
resources :guests, controller: :users, :type => "Guest"
resources :sellers, controller: :users, :type => "Seller"
錯誤
ActionController::ParameterMissing in UsersController#update
param is missing or the value is empty: user
Parameters:
{"_method"=>"patch", "authenticity_token"=>"56bC4iWSsYd+VrN7RV0NCMj4YD+fIMQKb8uKKC9dUkMtOORAilwPlk3oAgT2L8j5qMsH4tNdzy6zbdL5nVVi7Q==", "type"=>"Admin", "id"=>"3"}
調節器
def update
if current_admin
if @user.update(user_params)
redirect_to users_path
else
render 'edit'
end
end
end
private
def user_params
params.require(:user).permit(:type)
end
為什么這個錯誤? action期望一個參數:用戶,但它不是?
require
確保存在參數。 如果它存在,則返回給定鍵的參數,否則引發ActionController::ParameterMissing error
。
您需要user
參數,但它們在參數中缺失。
為了得到這個,你有很多方法。
方法1:
刪除require應該可以解決問題。
params.permit(:type)
方法2:
將user[]
作為名稱添加到編輯表單中的輸入。
如果添加編輯表單,將詳細說明方法1。
方法3:
另一種解決方案是將用戶密鑰添加到參數中。
def update
if current_admin
params.user = {
"type": params.type,
"id": params.id
}
if @user.update(user_params)
redirect_to users_path
else
render 'edit'
end
end
end
private
def user_params
params.require(:user).permit(:type)
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.