2012-03-30 14 views
0

Ich versuche, ein Rails-Formular mit AJAX einzureichen.Wie kann ich ein Rails-Formular mit AJAX senden, aber auch eine jQuery-Aktion auslösen?

Ich habe einige ein-/ausschalten jQuery-Funktion, die einige Farbe auf grün und rot setzt, wenn jemand mag oder nicht mag.

Was ich versuche, ist es meine jQuery-Funktion aufrufen, um die Farbe umzuschalten und dann das Formular mit Ajax an eine Rails-Funktion mit dem Status Like/Ablehnen eingereicht.

Meine Form:

#wrapper_select.like_select 
    = form_for @paintings, :url => "/paintings/handlelike", :method => "post", :remote => true, :html => {:name => 'form'} do |f| 

     = hidden_field_tag :s_id, params[:id] 
     = hidden_field_tag :likes, params[:choice] 

jQuery Funktion:

$('.like_select').click(function() { 
    if (this.className.match(/like_yes|like_no/)) $(this).toggleClass('like_yes like_no'); 
    else $(this).toggleClass('like_yes'); 

    }) 

Wie kann ich die Toggle-js-Funktion (selbst die Funktion arbeitet in Ordnung) anrufen und senden Sie das Formular mit Ajax und dann den Wert wenn ein Benutzer mag/nicht mag?

Antwort

1

Verwenden Sie ajaxsubmit Funktion von jquey.form Plugin dort können Sie eine andere Funktion aufrufen. Hier ist ein Link zu jquery.form Plugin.

http://jquery.malsup.com/form/

_ __ _ __ _ ___ _edit 2_ _ __ _ __ _ ___ __

= javascript_include_tag "jquery.form", "jquery.validate", "attachment_validation" 
= form_for @paintings, :url => "/paintings/handlelike", :method => "post", :remote => true, :html => {:id => "submit_form_id",:onsubmit => "return false;", :name => 'form'} do |f| 


    = submit_tag "submit", :class => "ClickClose", :id => "submit_form_btn" 

Ihre js

$("#submit_form_btn").click(function() { 
    //call your second function before submitting 

      $('#submit_form_id').submit(function() { 
      $(this).unbind('submit').ajaxSubmit({ 
       success: function(data) { 
       //do something on success case. 
       } 
      }) 
      return false 
      }); 
    }); 
+0

Thx nicht über diese Plugin wußte war, keine Möglichkeit, diese native zu tun? – Rubytastic

+0

Sie können auch ein Formular über die jquery.submit-Funktion senden, aber die Anfrage ist keine Ajax-Anfrage. Während Sie dieses Plugin verwenden, können Sie den Anhang einfach per Ajax-Anfrage hochladen/hochladen. –

+0

Noch ist diese wudent eine nicht funktionierende Lösung Wenn ich JS im Browser deaktivieren soll? Ich kann wirklich nicht das größere Bild sehen, wie man dieses Plugin für meinen Zweck tatsächlich benutzt. Welche Frage.submit meinst du? – Rubytastic

Verwandte Themen