保存可拖动div在轨道中的位置

时间:2009-05-14 16:24:55

标签: ruby-on-rails

在使div可拖动后,我想,当div被删除时,将div的位置传递给控制器​​,以便将其保存到数据库中。

我的第一个想法是在div中有一个隐藏的表单,有2个文本字段(一个用于X,一个用于Y),它通过javascript保持更新并在drop下提交。

然而,这听起来像是一个黑客,并不是一个优雅的解决方案。有没有人遇到过这个?

谢谢。

2 个答案:

答案 0 :(得分:3)

您可以简单地使用一个AJAX请求,该请求会在后台将X和Y值发布到您的Rails应用程序中。无需在HTML中存储位置。

如果你使用jQuery,你可以使用这样的东西:

// Include this in an onDrop event handler:
element = ... // dropped div
url = "http://example.com/.../save_div_position/";
data = $(element).position();
success_callback = function(data, textStatus) {
    // alert that new position is saved
};
$.post(url, data, success_callback, "json");

答案 1 :(得分:2)

我还要说在文本字段中存储位置是一个坏主意。 jQuery UI提供了draggable并且易于使用。下面的示例将在元素被删除时发送ajax请求。

$('#draggable_element').draggable({  
    stop: function(event, ui) {   
        $.post("http://example.com/some_action",
            { top: ui.position["top"], left: ui.position["left"] },
            function() {  
                // callback stuff
            }
        );
    }  
});
相关问题