2016-09-12 2 views
1

На мой взгляд (/app/view/media/index.html.erb), у меня есть функция AJAX и А form_tags: Моя функция AJAX:Рубин на Rails: Невозможно вызвать AJAX обратного вызова из form_tag

<script type="text/javascript" charset="utf-8"> 
 
    $(document).ready(
 
     function() { 
 
     $("#my_ajax").bind("ajax:success", 
 
      function (evt, data, status, xhr) { 
 
       console.log(data); 
 
       } 
 
      ).bind("ajax:error", function (evt, data, status, xhr) { 
 
      console.log("doh!") 
 
     }); 
 
     }); 
 
</script>
. И мои form_tags:
<%= form_tag '/delete_media', method: :delete do %> <%= submit_tag 'Delete', class: 'btn btn-danger', disabled:@media_contents.empty? , :remote => true, :id => "my_ajax" %>

Наша цель: когда я получаю ответ от сервера после представить, функция my_ajax будет работать.
Как это сделать ??? Я не могу вызвать функцию «my_ajax»? Я всегда получаю ответ JSON от сервера

EDIT:

Мой контроллер:

def delete_media @medias=Media.where(id: params[:media_contents]).destroy_all render json: @medias end

ответ

0

Вы не должны писать JS обрабатывать ajax вот так.
Должным образом реализовать Ajax в рельсах:

В /app/view/media/index.html.erb:

form_tag ..., remote: true 

В медиа-контроллере:

def destroy 
    # do your job 
    respond_to do |format| 
     format.js {} 
    end 
end 

В/приложении /view/media/destroy.js.erb:

// your js handle code 

Дополнительная информация: http://guides.rubyonrails.org/working_with_javascript_in_rails.html

0

может быть, попробовать что-то вроде этого:

<script> 
    $(document).ready(function(){ 
    $("#my_ajax").on('ajax:success', function(e, data, status, xhr){ 
     console.log(data); 
    }).on('ajax:error',function(e, xhr, status, error){ 
     console.log('doh!') 
    }); 
    }); 
</script> 
+0

Пожалуйста, проверьте мои изменения. Это мой контроллер, и я получаю json в браузере. Но я хочу получить этот json-результат в функции «my_ajax» без изменения моей страницы – voxter

Смежные вопросы