2013-03-13 7 views
19

Also habe ich googeln auf, wie Sie sie einrichten, ich endete mit diesem Code am Ende.Versuchen, herauszufinden, Ruby on Rails Remote: echte Rückrufe

<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> 

Aber es funktioniert nicht, und ich habe keine Ahnung, warum, ich bin sicher, dass ich etwas falsch gemacht habe, ich bin neu zu RoR und ich liebe die Tatsache, dass ich mit dieser Fernbedienung erklären kann: true in die Form selbst, sobald ich herausfinden, wie man die Rückrufe einstellen, werde ich gut sein :) Danke im Voraus.

+0

Was Sie Ihr Brower die sich Log-Konsole sagt, wenn Sie versuchen, das Formular senden? (Zugänglich in Google Chrome durch Drücken von F12) – MrYoshiji

+0

@MrYoshiji nichts, meldet die Konsole. Nichts. – Datsik

+0

Sie wollen so arbeiten? Ich habe eine Lösung mit 'jquery' und nicht mit': remote => true'. Ich bin mir ziemlich sicher, dass es wie Charme funktionieren wird. Ist es o.k ?? – codeit

Antwort

32

Nach Rails' wiki, sollte der Code unten arbeiten:

<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> 

Ein ähnlicher Code arbeitete für mich in Rails 3.2.14 und jquery-rails 3.0.4

Hoffe es h Ellen.

3

Versuchen Sie folgendes:

Setzen Sie Ihren JavaScript-Code auf document ready:

<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 kompatibel

<script type="text/javascript"> 

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

    }); 

</script>