Возвращенный код RJS не выполняется - PullRequest
1 голос
/ 11 марта 2010

Я использую jQuery с рельсами. Я пытаюсь сделать запрос PUT для обновления задачи. Звонок сделан успешно. Однако возвращенный код javascript не выполняется. Код возвращается нормально, но он просто не выполняется.

Вот запрос jQuery put, который я делаю.

$("#droppable_<%= bin.id -%>").droppable({
      drop: function(event, ui) {
        div_ids = ui.draggable.attr('id').split('_');
        $.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) {

        });
      }
    });

Это код rjs.

render :update do |page|
    page.alert 'success'
    page.remove "draggable_#{params[:id]}" if old_bin_id.to_s != params[:task][:bin_id]
    page.replace_html "count_#{old_bin_id}", current_user.tasks.bin(old_bin_id).size
    page.replace_html "count_#{params[:task][:bin_id]}", current_user.tasks.bin(params[:task][:bin_id]).size
end

Это то, что я получаю по завершении запроса.

try {alert("success");jQuery("#draggable_2").remove();jQuery("#count_2").html("");jQuery("#count_3").html("2");} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('alert(\"success\");\njQuery(\"#draggable_2\").remove();\njQuery(\"#count_2\").html(\"\");\njQuery(\"#count_3\").html(\"2\");'); throw e }

Что правильно, но просто не выполняется. Есть идеи почему?

1 Ответ

1 голос
/ 15 марта 2010

Потому что, если вы хотите обрабатывать rjs с помощью jQuery, есть два способа сделать это:

$("#droppable_<%= bin.id -%>").droppable({
  drop: function(event, ui) {
    div_ids = ui.draggable.attr('id').split('_');
    $.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) {
       eval(data) #run js ajax returned
    });
  }
});

или

$("#droppable_<%= bin.id -%>").droppable({
  drop: function(event, ui) {
    div_ids = ui.draggable.attr('id').split('_');
    $.ajax({
         url:'/tasks/' + div_ids[div_ids.length - 1],
         data: {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'},
         dataType: "script",
         type: "POST"
    });
  }
});
...