Ruby on rails ActionController::ParameterMissing-param缺失或值为空:用户:
我试图在单击按钮块或取消阻止时更新属性。但它没有在数据库中得到更新,我得到的错误是Ruby on rails ActionController::ParameterMissing-param缺失或值为空:用户:,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我试图在单击按钮块或取消阻止时更新属性。但它没有在数据库中得到更新,我得到的错误是参数丢失或值为空:user。即使在传递用户id时,我也会收到此错误。我找不到我的错误发生的地方 这是我的控制器代码: class UserController < ApplicationController before_action :set_user, only: [ :edit, :update] # GET /users # GET /users.json def i
参数丢失或值为空:user
。即使在传递用户id时,我也会收到此错误。我找不到我的错误发生的地方
这是我的控制器代码:
class UserController < ApplicationController
before_action :set_user, only: [ :edit, :update]
# GET /users
# GET /users.json
def index
@users = User.all
end
def edit
end
def update
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to user_index_path, notice: 'User was successfully blocked.' }
else
format.html { render :index }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_user
@user = User.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def user_params
params.require(:user).permit(:active)
end
end
您需要
user
param和active
字段:
def user_params
params.require(:user).permit(:active)
end
您只发送值
参数。你需要把你的按钮改成类似的代码
button_to("Block", user_path(id: user.id),
class: 'btn btn-outline-dark', :method => :patch, params: { user: { active: true}}
(或
活动:分别为false
。在方法user\u params
中,您需要参数user
。按钮上的链接只有get参数值
,而没有用户
get参数应该被称为类似于user[active]
您的块按钮应如下所示:
<%= button_to "Block", user_path(id: user.id, 'user[active]': false), class: 'btn btn-outline-dark', :method => :patch %>
:补丁%>
如果我们没有正确地从视图中传递参数,就会出现此错误。
在您的情况下,参数应该位于user
散列中
在您的私人部分:-
def user_params
params.require(:user).permit(:active)
end
实际上,您希望参数包含在user
hash中
当您在用户散列中期待active
属性时,它会给出错误,因为param丢失或值为空:user
这意味着它正在查找active
属性,该属性在传入参数中缺失
例如,应该命中控制器的参数应该如下所示:-
{"user"=>{"active"=>"true"}, "value"=>"false", "id"=>"5"}
在用户散列中传递视图页面中的活动参数,错误将消失。此外,您可以随时了解有关强参数的更多信息。在您的user_params方法中,允许所有参数,params.require(:user.permit!)!或者逐个指定参数。
def user_params
params.require(:user).permit(:active)
end
{"user"=>{"active"=>"true"}, "value"=>"false", "id"=>"5"}