параметры рефакторинга разрешены для изменения входных данных

#ruby-on-rails #ruby #gsub

#ruby-on-rails #ruby #gsub

Вопрос:

сначала я новичок в rails, у меня есть приложение rails, которое содержит профиль для каждого пользователя, в профиле, основанном на поле каждого пользователя, с которым отправляются параметры. например, «Mr. » но в моем контроллере я не смог принять, поэтому он возвращает ошибку

«#<ArgumentError: ‘mr.’ недопустимый заголовок>»,

я хочу отредактировать свой контроллер, чтобы получить параметры и изменить его на без точки, я думаю, возможно, можно было бы использовать gsub, но когда я пытаюсь отредактировать, он возвращает ошибку

«исключение»: «#<NoMethodError: неопределенный метод `gsub’ для #<Enumerator: «mr.»:gsub(» «)>>»,

возможно ли провести рефакторинг в разрешении параметров. это мой контроллер

 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
  

Ответ №1:

Я обнаружил, что использование gusb является неправильным, но я использую не в том месте, мне не нужно менять параметры отверстий на string, поэтому я убрал свое поле из параметров и изменил разрешение параметров, как показано ниже, и все идет хорошо

  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