sourcetip

Rails가 리소스 내부의 매개 변수를 복제했습니다.

fileupload 2023. 2. 17. 21:33
반응형

Rails가 리소스 내부의 매개 변수를 복제했습니다.

Angular Resource를 사용하고 있는데 Rails가 파라미터를 복제하여 리소스 이름에 넣는 이유를 이해할 수 없습니다.왜 이런 일이 일어나는지 알아야겠어

// post data
{"title":"asdsad"}

// rails parameters 
Parameters: {"title"=>"asdsad", "presentation"=>{"title"=>"asdsad"}}

중복: Stackoverflow에 오신 것을 환영합니다.Stackoverflow에서는 코멘트에 50포인트가 필요합니다.이렇게 되면 이렇게 됩니다.정말 죄송합니다. AngularJS $리소스는 추가 "등록" 해시를 전송합니까?

..config를 켰을 경우.initializer의 wrap_parameters [파일 config/initializers/filename_parameters.filename]또는 [you]가 컨트롤러의 wrap_parameters()를 호출하고 있습니다.파라미터는 기본적으로 컨트롤러 이름에 따라 복제되어 키로 랩됩니다.

http://guides.rubyonrails.org/action_controller_overview.html#parameters http://api.rubyonrails.org/classes/ActionController/ParamsWrapper.html

즉, 레일이 패럴 해시에 들어가는 기본 방식입니다.

저도 같은 질문을 했지만 문제를 이해하지 못했기 때문에 다른 해결책이 필요했습니다.

패스워드 컨트롤러(이메일로 패스워드 리셋을 유효하게 하는 경우)의 파라미터는 다음과 같습니다.

{"email"=>"eg@eg.com", "code"=>"123", "password"=>"[FILTERED]", "password"=>{"email"=>"eg@eg.com", "code"=>"123", "password"=>"[FILTERED]"}}

'왜 내 패럴림픽이 복제가 됐을까?'password"외부는 그 사실을 깨닫지 못하고password리소스 이름에서 왔습니다.(고마워, 7stude!)하지만 내가 덧붙인다면wrap_parameters false컨트롤러 상단에서 파라미터를 평탄하게 하기 위해 강력한 파라미터에 대해 '요구/허가' 패턴을 사용할 수 없었습니다.

#passwords_controller.rb
...
private
def forgot_password_params
    params.require(:password).permit(:email, :password, :code)
end

좀 더 읽기 쉽게 하기 위해서wrap_parameters매개 변수에서 외부 암호 참조 이름을 변경합니다.코드:

#passwords_controller.rb
wrap_parameters "reset" 
...
private
def forgot_password_params
    params.require(:reset).permit(:email, :password, :code)
end

및 결과 파라미터:{"email"=>"eg@eg.com", "code"=>"123", "password"=>"[FILTERED]", "reset"=>{"email"=>"eg@eg.com", "code"=>"123", "password"=>"[FILTERED]"}}

그 후 즉시 관련 문제에 부딪혔는데, 인앱 패스워드 리셋을 위해 패스워드를 넘겼습니다.newPassword내 폼은 아니지만 내 폼에는 없었어요.기본적으로 매개 변수에는 모델의 속성만 포함됩니다. wrap_parameters이것도 수정해 보겠습니다.

#users_controller.rb
wrap_parameters :user, include: [:username, :email, :password, :newPassword]

언급URL : https://stackoverflow.com/questions/27672954/rails-duplicated-the-parameters-inside-the-resource

반응형