允许更改输入的重构参数
refactor params permited to change input
起初我是 rails 的新手,我有 rails 应用程序 包含每个用户的配置文件,在基于每个用户性别的配置文件中发送一个参数。例如“先生。”但是在我的控制器中我无法接受所以它return错误
"#<ArgumentError: 'mr.' is not a valid title>",
我想编辑我的控制器以获取参数并将其更改为不带点,我想也许可以使用 gsub 但是当我尝试编辑它时 returns 错误
"exception": "#<NoMethodError: undefined method `gsub' for #<Enumerator: "mr.":gsub(" ")>>",
,是否可以在 params permit 中进行重构。这是我的控制器
def update
if (profile_update_params.present?)
profile_update_result = ::Api::V1::Profile::Update.call(profile_params: profile_update_params, profile: @current_user.profile, request: request)
return render json: Helpers::ErrorsHandler.view_parse(profile_update_result), status: :bad_request if profile_update_result.errors
end
if (user_update_params.present?)
user_update_result = ::Api::V1::User::Update.call(user_params: user_update_params, user: @current_user)
return render json: Helpers::ErrorsHandler.view_parse(user_update_result), status: :bad_request if user_update_result.errors
end
result = sheriff
render result.view
end
这是我的参数许可
def profile_update_params
params.permit(:phone, :title, :email, :gender, :first_name, :last_name, :description, :job_title, :time_zone)
end
我发现使用 gusb 是正确的,但我用错了地方,我不需要将孔参数更改为字符串,所以我将我的字段从参数中取出并更改了我的参数许可,如下所示,一切都在进行中很好
def profile_update_params
params.permit(:phone, :email, :gender, :first_name, :last_name, :description, :job_title, :time_zone).merge({title: params[:title].to_s.gsub(".", "")})
end
起初我是 rails 的新手,我有 rails 应用程序 包含每个用户的配置文件,在基于每个用户性别的配置文件中发送一个参数。例如“先生。”但是在我的控制器中我无法接受所以它return错误
"#<ArgumentError: 'mr.' is not a valid title>",
我想编辑我的控制器以获取参数并将其更改为不带点,我想也许可以使用 gsub 但是当我尝试编辑它时 returns 错误
"exception": "#<NoMethodError: undefined method `gsub' for #<Enumerator: "mr.":gsub(" ")>>",
,是否可以在 params permit 中进行重构。这是我的控制器
def update
if (profile_update_params.present?)
profile_update_result = ::Api::V1::Profile::Update.call(profile_params: profile_update_params, profile: @current_user.profile, request: request)
return render json: Helpers::ErrorsHandler.view_parse(profile_update_result), status: :bad_request if profile_update_result.errors
end
if (user_update_params.present?)
user_update_result = ::Api::V1::User::Update.call(user_params: user_update_params, user: @current_user)
return render json: Helpers::ErrorsHandler.view_parse(user_update_result), status: :bad_request if user_update_result.errors
end
result = sheriff
render result.view
end
这是我的参数许可
def profile_update_params
params.permit(:phone, :title, :email, :gender, :first_name, :last_name, :description, :job_title, :time_zone)
end
我发现使用 gusb 是正确的,但我用错了地方,我不需要将孔参数更改为字符串,所以我将我的字段从参数中取出并更改了我的参数许可,如下所示,一切都在进行中很好
def profile_update_params
params.permit(:phone, :email, :gender, :first_name, :last_name, :description, :job_title, :time_zone).merge({title: params[:title].to_s.gsub(".", "")})
end