문제

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 의이 게시물 우선.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top