0

나는 form_for와 함께 사용하고자하는 활성 모델 모델을 가지고 있습니다.레일 form_for html 옵션에 응답하지 않습니다

form_for(@item, url: (params[:action] == 'edit' ? api_item_path(datasheet_id: params[:datasheet_id], item_id: params[:item_id]) : api_items_path), html: {method: (params[:action] == 'edit' ? 'patch' : 'post')}) do |f| 

이름이 지정된 경로의 'api_'가 앞에 붙어 있기 때문에이 방법을 선택합니다. (이 문제를 해결하는 좋은 방법이 있을지 모르지만, 이것이 내 문제의 일부가 아니길 바란다.)

문제는 메소드 키가있는 html 옵션이 양식의 메소드 (항상 '게시')에 영향을 미치지 않는다는 것입니다.

모델이 respond_to? : persisted?이므로 ActionView는 양식 (id = "edit_item_xxx", class = "edit_item")의 이름을 올바르게 지정하지만 메소드는 게시 된 상태로 유지됩니다.

실종 신고서가 분명히 있기를 바랍니다. 여기

내가 정보를 원하시면 사용했던 소스를 다음과 같습니다 https://github.com/rails/rails/blob/master/actionview/lib/action_view/helpers/form_helper.rb http://guides.rubyonrails.org/form_helpers.html

+1

"패치"방법이 없습니다. HTML 폼은'GET'과'POST'만을 지원합니다. Rails는 양식이이 옵션을 통해 제출 된 후에 만 ​​나머지를 시뮬레이트합니다. –

+0

Oh jeeze ... 그건 당황스러운거야. = p – jphager2

답변

5

The method parameterhtml 옵션 해시 외부해야한다 :

form_for(@item, url: (...), method: (...), html: {}) do |f| 

내가 도우미를 작성하는 것이 좋습니다 것 또는 커스텀 폼 빌더 객체. 여기에는 많은 부분이 있습니다. 테스트하기가 어렵고 실수하기 쉽습니다.

+0

당연하지! 감사. – jphager2