Как я могу отправить форму Rails с AJAX, но также вызвать действие jQuery? - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь отправить форму Rails с AJAX.

У меня есть несколько функций включения / выключения jQuery, которые устанавливают некоторые цвета на зеленый и красный, если кому-то нравится или не нравится.

Я пытаюсь заставить его вызывать мою функцию jQuery для переключения цвета, а затем отправлять форму с помощью ajax в функцию rails со статусом «нравится / не нравится».

Моя форма:

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

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

  })

Как я могу вызвать функцию переключения js (сама функция работает нормально) и передать с помощью ajax форму, а затем значение, если пользователь любит / не любит?

Ответы [ 2 ]

1 голос
/ 31 марта 2012

Для отправки формы с помощью Jquery ajax требуются дополнительные материалы.

  1. проверка формы
  2. сбор значений и отправка их с помощью Jquery POST
  3. Обработка ответа и отображениесообщение

Лучше его увидеть.это хороший пример, я думаю

http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

1 голос
/ 30 марта 2012

Используйте функцию ajaxsubmit из плагина jquey.form, где вы можете вызвать другую функцию. Вот ссылка на плагин jquery.form.

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"

Ваш 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
          });
  });
...