유효성 검사 오류에 따라 AJAX에서 다른 DIV를 업데이트합니다
-
08-07-2019 - |
문제
Ajax를 통해 제출하는 양식이 있습니다 (프로토 타입과 내장 레일의 Form_Remote_tag '도우미를 사용하여).
내가 원하는 것은 양식 검증 오류가 있지만 제출이 성공적으로 통과하는 경우 다른 div (양식이 사는 곳)가있는 경우 하나의 div (상태 영역)를 업데이트하는 것입니다.
내 코드는 다음과 같이 보입니다.
<div id="recipe-status"><!-- I want form validation errors to go here --></div>
<div id="recipe">
<%= form_remote_tag(:update => "recipe-status",
:before => "Element.show('wait-indicator')",
:success => "Element.hide('wait-indicator')",
:complete => visual_effect(:appear, "recipe-status"),
:url => { :action => 'import', :id => @recipe.id },
:failure => "alert('Unable to import recipes at present')") %>
<-- Form goes here, I want this to be replaced if the submit succeeds -->
</div>
이 작업을 수행 할 수있는 유일한 방법은 유효성 검사 오류가 있지만 약간의 해킹처럼 보이는 경우 HTTP 오류 상태를 반환하는 것입니다. 더 깨끗한 방법이 있습니까?
해결책
최신 정보를 확인하겠습니다 jQuery의 RailScasts 뿐만 아니라 RJS 템플릿의 오래된 에피소드. 그것들은 Ajax 및 Rails 앱으로 잘 운영하고 해킹없이 모든 것을 올바르게 깨끗하게 작동시킬 수 있습니다.
코드를 살펴보면 jQuery를 사용하는 것이 좋습니다 (위의 에피소드 참조). 양식에서 모든 JavaScript를 추출합니다. 훨씬 덜 눈에 띄게 만듭니다 (아주 좋은 것입니다).
기술을 실망한 것 같습니다. 따라서 jQuery로 눈에 띄지 않는 JavaScript를 신속하게 선택할 것입니다. 그리고 훨씬 더 깨끗한 앱으로 훨씬 더 행복한 사람이 될 것입니다. :)
행운을 빕니다!
다른 팁
다른 답변에서 언급했듯이 jQuery를 사용하는 것을 추천합니다. 그러나, 그것은 약간의 경사로가 필요할 것이므로, 레일 기본값을 고수하여 더 빨리 앞으로 나아갈 수 있도록 ...
당신이보고 싶은 것은 인라인 RJ입니다. form_remote_tag 호출의 모든 작업을 수행하는 대신 컨트롤러 내에서 AJAX 업데이트를 수행 할 수 있습니다. 이렇게하면 유효성 검사 오류가 있는지 여부에 대한 논리를 관리하고 그에 따라 하나 또는 다른 AJAX 업데이트 (어느 쪽이든)를 실행할 수 있습니다.
보다 Jamis Buck 의이 게시물 우선.