2009-06-12 4 views
0

레일즈 앱에서 jQuery Form Plugin을 사용하고 있습니다. 나는 양식을 다음과 같이 있습니다jQuery Form Plugin을 Rails js.erb 템플릿과 함께 사용하는 방법은 무엇입니까?

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} 
}); 

$(document).ready(function(){ 
    $("#comment_form").ajaxForm(); 
}); 

내 댓글 컨트롤러는 다음과 같이이다 :

<form action="/comments" id="comment_form" method="post"> 
    <textarea cols="60" id="comment_comment" name="comment[comment]" rows="3"></textarea> 
    <input id="comment_submit" name="commit" type="submit" value="Add comment" /> 
</form> 

내 application.js 파일이

def create 
    @comment = Comment.new(params[:comment]) 

    respond_to do |wants| 
    if @comment.save 
     flash[:notice] = 'Added comment.' 
     wants.js 
    end 
    end 
end 

내가 몇 가지 jQuery 코드가/보기/댓글/create.js.erb 좋아요 :

$("#comment_form).hide(); 

과 다른 것들.

내 문제는 create.js.erb 내부의 jQuery 코드가 발생하지 않는다는 것입니다 (즉, 양식이 숨겨지지 않음). 대신이 코드를 application.js에 사용하면 (Railscast 덕분에이 코드가 적용됨)

모두 잘 작동합니다. create.js.erb의 모든 코드는 훌륭하게 작동합니다! 차라리 jQuery Form 플러그인을 사용하고 싶지만 create.js.erb 코드를 실행하는 방법을 이해하지 못합니다. 다음과 같이하면 :

$("#comment_form").ajaxForm({success: function(){$("comment_form").hide()}}); 

그런 다음 jQuery 코드가 작동합니다. 하지만 erb 템플릿을 실행해야합니다 (부분 내부 렌더링과 같은 작업을하기 때문에).

통찰력을 주셔서 감사합니다.

답변

1

나는 이것을 알아 냈다. -이 스크린 캐스트 http://blog.edgecase.com/2009/6/15/ajax-file-uploads-made-easy-screencast을 보면서 나는 그가 dataType와 추가주의 : 대신

$("#comment_form").ajaxForm(); 

의, 그래서 '스크립트' 을 나는

$("#comment_form").ajaxForm({dataType: 'script'}); 

작품이 필요! 그리고 바로 jQuery Form 문서에 있습니다. "dataType == 'script'서버 응답이 전역 컨텍스트에서 평가되는 경우"

관련 문제