2011-11-18 9 views
6

starałem się postępować: Rails: submit (via AJAX) when drop-down option clickedSzyny postać pilota i wybrać się na zmiany nie działa

Jednak żadna z tych opcji wydaje się działać (onsubmit, przedkłada)

To, co obecnie, że jest odświeżenie strona:

= simple_form_for task, :remote => true, :format => :js do |f|` 
    = f.association :status, :label => false, :include_blank => false, :input_html => {:onchange=>'this.form.submit();' }` 

To po prostu regularnie publikuje formularz i powoduje odświeżenie strony.

W jaki sposób mogę go pobrać przez ajax, aby strona się nie odświeżyła?

Odpowiedz

4

Mimo że rails zastępuje domyślną akcję i przesyła ją przez AJAX po dodaniu: remote => true, wymuszasz na formularzu, aby opublikować regularne informacje w zdarzeniu onchange.

Musisz wykonać własną funkcję, aby przesłać za pośrednictwem AJAX i wywołać ją ze swojej zmiany, używając $ .post() $.post(), aby wysłać formularz na serwer.

4

skończyło się dokonywania powiązania zdarzeń jak za sugestią Marca

= simple_form_for task, :remote => true, :format => :js, :html => {:id => "task_#{task.id}_status"} do |f| 
      = f.association :status, :label => false, :include_blank => false, :input_html => {:id => "task_#{task.id}_status_select" } 

:javascript 
     jQuery(function($) { 
      $(document).ready(function() { 
      $("#task_#{task.id}_status_select").bind("change", function() { 
       $.ajax({ 
       type: "PUT", 
       url: '#{project_story_type_story_task_path(@project, @story_type, @story, task)}', 
       data: 'task[status_id]=' + $('#task_#{task.id}_status_select').val(), 
       complete: function() { 
        $('#task_#{task.id}_status').prepend("<span id='task_#{task.id}_success' class='label success right'>SAVED</span>"); 
        $('#task_#{task.id}_success').delay(500).fadeOut(); 

       } 
       }); 
9

Wystarczy zmienić onchange to zamiast:

{:onchange=>'$(this.form).submit();' } 
+0

To działa fantastycznie bez konieczności kod A instrukcja obsługi lub przeskoczyć przez dodatkowe obręcze. –

Powiązane problemy