2013-03-25 5 views
0

양식 제출시 오류가 발생했습니다. 이 양식은 다음과 같이 정의된다 :Ajax가 remote_form_for에 정의되지 않았습니다.

<% remote_form_for @my_object do |f| %> 
    ... 
<% end %> 

생성 된 HTML 것은 :

<form action="/my_objects" id="new_my_object" method="post" 
    onsubmit="new Ajax.Request('/customers', { 
     asynchronous:true, 
     evalScripts:true, 
     parameters:Form.serialize(this) 
    }); return false;"> 
    ... 
</form> 

나는이 JS encountred 오류 :

Uncaught ReferenceError: Ajax is not defined 

어디 선가 읽은 그것이 프로토 타입 오류이다,하지만 난 돈 ' 내가 만든 실수를 이해하지 못한다.

내 구성은 Rails 2.3.16, Ruby 1.8.6, jquery 1.9.1 및 jquery-ui 1.10.2입니다.

+1

http://stackoverflow.com/questions/4999559/jquery-ui-and-prototype-conflict 당신은 프로토 타입 구문을 사용하지만 jQuery를 포함하고 –

+1

. 프로토 타입을 사용하도록 전환하거나 jQuery 메서드를 사용하여 ajax 호출을 작성하십시오. – JJJ

+0

@Juhana 프로토 타입 구문을 사용하지 않습니다. 레일스가 사용합니다. Rails의 jQuery 구문 사용법에 대해 어떻게 말 할 수 있습니까? – pierallard

답변

1

기본 레일 2.x에서 (및 이전 버전)으로, 레일 2.X에서 jQuery 코드를 생성하려면. 프로토 타입 (CF javascript_helperprototype_helper에 대한

을 JS 코드를 생성 레일 2.x 용 jrails 플러그인을 추가 .

(function($) { 
    $.ajaxSettings.accepts._default = "text/javascript, text/html, application/xml, text/xml, */*"; 
})(jQuery); 

: 당신은 remote_form_for 또는 link_to_remote 및 jQuery를 같은 같은 레일 도우미를 사용할 수

jrails.js의이 부분은 JQuery와 1.9 쓸모있을 수 있습니다 것입니다 이 코드에 의해 대체 : 당신이 JQuery와 작업 할 경우

def my_action 
    respond_to |format| 
    format.js { ... } 
    format.html { ... } 
    end 
end 
+1

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남기십시오. 자신의 게시물에 언제나 댓글을 달 수 있으며, 충분한 평판을 받으면 (http://stackoverflow.com/faq#reputation) [모든 게시물에 댓글 달기] (http://stackoverflow.com/privileges/comment). – fedorqui

+0

조언을위한 thx –

+0

질문의 큰 개선을 보니 반갑습니다! +1. – fedorqui

0

이 시도 :

<%= form_for @my_object, :html => {:method => "post" }, :remote => true do |form| %> 

<% end %> 

도 확인하시기 바랍니다

$.ajaxPrefilter(function (options, originalOptions, jqXHR) { 
    options.beforeSend = function() { 
    jqXHR.setRequestHeader("accept", '*/*;q=0.5, ' + $.ajaxSettings.accepts.script); 
    if ($.isFunction(originalOptions.beforeSend)) originalOptions.beforeSend(); 
    }; 
}); 

는 컨트롤러에서 작업 아약스 요청 감지 기능을 가지고 레일 가이드 라인 : http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

0

나는 당신의 문제에 대한 대답이 아닙니다. 하지만 이러한 유형의 혼동을 피하기 위해 Rails remote attribute 대신 JQuery AJAX를 사용합니다. JQuery와 함께 AJAX를 사용하는 것이 매우 편리합니다.

<% form_for @my_object do |f| %> 
    ... 
<% end %> 

<script> 
    $(function(){ 
    $('#form_id').submit(function(){ 
     $.post($(this).attr('action'), $(this).serialize(), function(data, status){ 
     alert(status) 
     }) 
    }) 
    }); 
</script> 
관련 문제