2013-03-13 8 views
19

私はそれらを設定する方法を尋ねてきましたが、最後にこのコードを使いました。Ruby on Railsのリモートを理解しようとしています:真のコールバック

<script> 

$('#reportform') 
    .bind("ajax:success", function(data, status, xhr) { 
     $('#reportalert').text('Done.'); 
    }); 
    .bind("ajax:error", function(xhr, status, error) { 

     $('#reportalert').text('Failed.'); 

    }); 

</script> 


<h2>Review Driver</h2> 
<p>Fill out your review of the driver</p> 

<div class="hero-unit form-signin" id="reportformdiv"> 

    <%= form_for(@report, html: { id: "reportform" }, remote: true, update: 
    { success: "response", failure: "error"}) do |t| %> 
<p id="reportalert"></p> 
    <%= t.text_field :plant_site, placeholder: "Plant Site" %> 

    <%= t.text_field :route_number, placeholder: "Route Number" %> 

    <%= t.text_field :driver_name, placeholder: "Driver name if available" %> 

    <%= t.date_select :date_recorded, html: { class: "input-block-level" } %> 

    <%= t.text_field :action,  placeholder: "Action taken" %> 

    <%= t.text_area :report_body, placeholder: "What you witnessed", 
            style: "height: 300px;", 
            class: "input-block-level" %> 

    <%= t.submit  "File Report", class: "btn btn-primary btn-large" %> 

    <% end %> 

</div> 

しかし、それは動作していないと私は、私が何か間違ったことをやったと確信している理由はわかりません、私はRoRのに新たなんだと私はこのリモートを宣言することができるという事実を愛する:本当でそのフォームは、私はコールバックを設定する方法を把握した後、私は行っていいだろう:)前もってありがとう。

+0

フォームを送信しようとすると、あなたのブラウワーのログコンソールはあなたを伝えるんか? (F12を押してGoogle Chromeでアクセス可能) – MrYoshiji

+0

@MrYoshiji何も、コンソールレポート。何もない。 – Datsik

+0

この方法で作業したいですか?私は、 ':remote => true'を使わずに' jquery'を使って解決しています。私はそれが魅力のように働くだろうと確信しています。大丈夫ですか ?? – codeit

答えて

32

Rails' wikiによると、コード怒鳴るが動作するはずです:

<script> 
    $(document).ready(function(){ 
    $('#reportform').on('ajax:success', function(e, data, status, xhr){ 
     $('#reportalert').text('Done.'); 
    }).on('ajax:error',function(e, xhr, status, error){ 
     $('#reportalert').text('Failed.'); 
    }); 
    }); 
</script> 

同様のコードはRailsの中で私のために働きました3.2.14およびjquery-rails 3.0.4

希望するエルプス。

3

これを試してみてください:

document ready上のあなたのjavascriptのコードを入れてください:

<script> 
$(document).ready(function(){ 
    $('#reportform') 
    .bind("ajax:success", function(data, status, xhr) { 
     $('#reportalert').text('Done.'); 
    }); 
    .bind("ajax:error", function(xhr, status, error) { 

     $('#reportalert').text('Failed.'); 

    }); 
}) 
</script> 
2

Turbolinks互換

<script type="text/javascript"> 

    $(document).on('ajax:success', 'a[data-remote].watching', function(e, data, status, xhr){ 

    }); 

</script>