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
'sourcetip' 카테고리의 다른 글
워드프레스:게시물에 대해서만 태그 사용 안 함 (0) | 2023.02.17 |
---|---|
AJAX 페이지는 어떻게 스크래핑합니까? (0) | 2023.02.17 |
Angular 통합 방법UI에서 AngularJS로? (0) | 2023.02.17 |
클라이언트에 Firebase에서 원하는 데이터에 액세스할 수 있는 권한이 없습니다. (0) | 2023.02.17 |
테스트 시 리액트 상태 갱신의 원인이 되는 코드를 행동으로 정리해야 합니다. (0) | 2023.02.13 |