재 작성여러 form_fors 내가이 개 모델을 가지고있는 _method 속성
문제를 일으키는 것입니다. 앱 및 대화. 앱은 여러 대화
resources :apps do
resources :conversations
end
내가 단일 뷰가 들어있는 태그의 양식을 사용하여 2 개 형태의. 첫 번째 양식은 앱 모델을 업데이트하기위한 것입니다. 다른 하나는 대화를 작성하거나 업데이트하기위한 것입니다.
내가 겪고있는 문제는 form_for 태그를 사용하면 결과 HTML이 _method 입력을 생성하지 않는다는 것입니다.
EG 대화 형식. 이 문제를 갖는 하나로서
<form accept-charset="UTF-8" action="/apps/50c87614e976a31149000009/conversations" class="new_conversation ng-pristine ng-valid" id="new_conversation" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓">
<input name="authenticity_token" type="hidden" value="RqwwgBb737uuwg3PgRS+z0qlOP1aDqWe+2hrEeU0KHk=">
</div>
앱 양식
<form accept-charset="UTF-8" action="/apps/50c87614e976a31149000009" class="edit_app ng-pristine ng-valid" enctype="multipart/form-data" id="edit_app_50c87614e976a31149000009" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓">
<input name="_method" type="hidden" value="put">
<input name="authenticity_token" type="hidden" value="RqwwgBb737uuwg3PgRS+z0qlOP1aDqWe+2hrEeU0KHk="></div>
은 지금의 대화 모델에 집중할 수 있습니다.
위의 html에서 대화 형식에서 게시물 요청을 보내야합니다. 불행히도 레일 앱에 의해 수신되면 puts 요청으로 처리됩니다.
form_for에 대한 설명서를 보면 form_for이 _method라는 숨겨진 입력 필드를 설정해야한다는 것을 알고 있습니다.
대화 형식을보고이를 응용 프로그램 양식과 비교하면 대화에 _method 특성이 없음을 알 수 있습니다. 나는 이것이 왜 있는지를 판단 할 수 없다.
왜 이것이 무시되고있는 이유가 있습니까? 또는 대화 양식을 제출할 때 게시 대신 게시가 전송되는 이유는 무엇입니까?
컨트롤러의 모양은 어떻습니까? 그 루트는 어떤가? – PerfectlyNormal
@PerfectlyNormal 컨트롤러와 경로는 리소스로 정의 된 표준 휴식 경로입니다. 그러나 컨트롤러 경로는 앱 안에 중첩되어 있습니다. 무슨 뜻인지 업데이트 된 질문을 참조하십시오. 왜 물어 보니? – OVERTONE
나는 괜찮은 것 같아 보이지만 이후로는 코드의 나머지 부분을 살펴보면 아마도 도움이 될 것 같아서 물었다. 'form_for'는 요청이 POST가 아닌 다른 것으로 취급 되어야만하므로'_method' 필드를 설정하므로 문제가되지 않습니다. – PerfectlyNormal