2012-09-30 32 views
1

我实现了jQuery的可拖放/可拖拽的笔记列表,以便对它们进行分层次排序,这在当时工作正常,但我觉得自己做得太多了。在创建手动Ajax请求时使用jquery-rails(ujs)

整个csrf部分手动发送请求,我也手动评估响应,这是ujs提供的功能。有没有一种方法可以无缝地整合,以便我可以使用ujs库的优点?

我想到的一个可能的解决方案是将整个可拖动的元素包装成<form data-remote="true">,但是这感觉有点ha。。

$(function() 
{ 
    $('#notes-container .note').draggable(); 

    $('#notes-container .note').droppable({ 
     drop: function(event, ui) 
     { 
      $.ajax({ 
       type: 'PUT', 
       url: ui.draggable.find('form').attr('action'), 
       data: { 
        authenticity_token: $('meta[name="csrf-token"]').attr('content'), 

        task: { 
         parent_id: $(this).data('id') 
        } 
       } 
      }); 
     } 
    }); 

}); 
+0

这并不是什么黑客攻击,你只需要为整个表单的处理提交AJAX。我做了很多。我有几十个AJAX动作的remote => true的表单。但要小心,我有一小组用户(如277 MAX),我不关心他们必须启用javascript来使用我的网站。如果您担心对禁用JavaScript的用户不显眼或担心,我不是最好听的。 – RadBrad

+0

,因为这应该是一个小小的web应用程序,我觉得网站应该不断发展,并且不支持,我不会给用户使用任何东西,例如IE <8等。我的目标是保持代码干净,干爽,而不是向下 - 兼容十年;-) – pduersteler

回答

0

通过将整个形式,我需要进入元件,然后使draggable/droppable回调中的值填写表格需要和烧制,然后由jquery-rails处理的.submit()解决。