Ruby on rails 未找到现有用户的Rails 404
我有一个rails应用程序,我试图在其中添加一个未来来禁止现有用户。我的要求如下:Ruby on rails 未找到现有用户的Rails 404,ruby-on-rails,postgresql,reactjs,controller,Ruby On Rails,Postgresql,Reactjs,Controller,我有一个rails应用程序,我试图在其中添加一个未来来禁止现有用户。我的要求如下: handleUserBan(evt) { evt.preventDefault(); let user_id = evt.target.dataset.userId; API.put('admin/users/'+user_id, {user: {banned: true}}, function(res) { this.loadUsers(); }.bind(this)) } 而我的管理命名空间中
handleUserBan(evt) {
evt.preventDefault();
let user_id = evt.target.dataset.userId;
API.put('admin/users/'+user_id, {user: {banned: true}}, function(res) {
this.loadUsers();
}.bind(this))
}
而我的管理命名空间中的“userscoontroller”是:
before_action :enforce_admin!
def show
@user = User.find(ban_params[:id])
end
def update
@user = User.find(ban_params[:id])
prms = ban_params
if prms.include?(:banned)
@user.update_attributes!(prms)
@user.save!
return render :status=>200, :json => {success: true}
end
end
private
def ban_params
params.require(:user).permit(:banned)
end
但我有一个错误:
ActiveRecord:未找到记录
找不到id为的用户=
即使我的数据库中存在具有所选id的用户。我的请求结构如下:
Request
Parameters:
{"user"=>{"banned"=>"true"},
"id"=>"7",
"format"=>"json"}
以下是我的管理员命名空间路由:
namespace :admin do
put 'ban_user', :to => 'users#ban_user'
resources :charges
resources :coaches
resources :events
resources :invoices
resources :reviews
resources :users
end
尝试使用params[:id]
而不是ban_params[:id]
方法ban_params
将只返回params
中banked
的值。在本例中,params
包含{id:'user_id',action:'your action',controller:'controller',…,user:{banked:true}
def ban_params
params.require(:user).permit(:banned)
end
尝试使用params[:id]
而不是ban_params[:id]
方法ban_params
将只返回params
中banked
的值。在本例中,params
包含{id:'user_id',action:'your action',controller:'controller',…,user:{banked:true}
def ban_params
params.require(:user).permit(:banned)
end
此代码正在过滤掉id
参数,因为它只允许禁用的参数:
def ban_params
params.require(:user).permit(:banned)
end
类似的操作可能会起作用,但它会失去许可
约束:
params.permit(:id, :user => [:banned])
此代码正在过滤掉id
参数,因为它只允许禁用的参数:
def ban_params
params.require(:user).permit(:banned)
end
类似的操作可能会起作用,但它会失去许可
约束:
params.permit(:id, :user => [:banned])
这很有效,只是一个快速跟进问题;为什么params
即使我没有在我的控制器中定义这样的方法也能工作?这是否意味着我发送给控制器的所有参数都可以通过params
访问,即使使用过滤器也可以?是的,您始终可以访问原始params
散列。@anon023432,我知道,是的params
方法包含所有请求参数def params@|u params||=Parameters.new(request.Parameters)end
;为什么params
即使我没有在我的控制器中定义这样的方法也能工作?这是否意味着我发送给控制器的所有参数都可以通过params
访问,即使使用过滤器也可以?是的,您始终可以访问原始params
散列。@anon023432,我知道,是的params
方法包含所有请求参数def params@_params| |=参数。新(request.Parameters)结束
感谢您的解决方案。即使这种方法也能工作,但我在这种情况下使用了另一种解决方案,因为我想保留我的permit
constraint感谢您的解决方案。即使这种方法也能工作,但我在这种情况下使用了另一种解决方案,因为我想保持我的许可
约束