允许更改输入的重构参数

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