Ruby on rails Rails和jQuery发送Ajax请求

Ruby on rails Rails和jQuery发送Ajax请求,ruby-on-rails,ruby,jquery-ui,jquery,Ruby On Rails,Ruby,Jquery Ui,Jquery,您好,我目前有一个Rails应用程序,它使用jQuery库来运行ajax请求。但是,我遇到了一个小问题,因为发出的ajax请求给了我一个错误: a(this).data("draggable") is undefined rails程序应该获取一个可拖动对象并将其放入一个有效的容器中,然后更新可拖动对象的属性以反映通过拖放赋予的新权限。因此,它基本上是一种组织权限的方法,但通过拖放。这是Rails代码 <%= drop_receiving_element drop_id,

您好,我目前有一个Rails应用程序,它使用jQuery库来运行ajax请求。但是,我遇到了一个小问题,因为发出的ajax请求给了我一个错误:

a(this).data("draggable") is undefined
rails程序应该获取一个可拖动对象并将其放入一个有效的容器中,然后更新可拖动对象的属性以反映通过拖放赋予的新权限。因此,它基本上是一种组织权限的方法,但通过拖放。这是Rails代码

<%= drop_receiving_element drop_id,
            :onDrop => "function(ev,ui){
          if (confirm(\"#{escape_javascript(_('This will add User to this Group, are you sure?'))}\"))
          {#{remote_function(:update => 'module_content',
          :url => {:controller => :projects,
          :action => :member_change,
          :id => @project.id},
          :with => "'u=' + encodeURIComponent($(ui.draggable).attr('id')) + '&r=' + encodeURIComponent($(this).attr('id'))"
          )};}
          }",
            :accept => '.RolesUsersSelection',
            :update => 'roles_edit',
            :url => {:controller => :projects, :action => :role_user_update},
            :hoverclass => "#{drop_class}_active"
        %>
“功能(ev、ui){
if(确认(\“{escape\u javascript(\('这将向该组添加用户,您确定吗?'))}\))
{#{remote_函数(:update=>'module_content',
:url=>{:controller=>:projects,
:action=>:成员更改,
:id=>@project.id},
:with=>“'u='+encodeURIComponent($(ui.draggable).attr('id'))+'&r='+encodeURIComponent($(this.attr('id'))”
)};}
}",
:accept=>'.RolesUsersSelection',
:update=>roles\u edit',
:url=>{:controller=>:projects,:action=>:role\u user\u update},
:hoverclass=>“#{drop_class}_active”
%>
这是由jrails和jquery创建的JavaScript:

<script type="text/javascript">
//<![CDATA[
jQuery('#RemoveThisMember').droppable({accept:'.RolesUsersSelection', drop:function(ev,ui){
    if (confirm("This will remove User from this Group, are you sure?"))
    {jQuery.ajax({data:'u=' + encodeURIComponent($(ui.draggable).attr('id')), success:function(request){jQuery('#module_content').html(request);}, type:'post', url:'/of/projects/11/member_delete'});}
    }, hoverClass:'ProjectRoleDropDelete_active'})
//]]>
</script>

//
我猜这和
($(this.attr('id'))
有关,但我不确定还有什么其他内容。。。
谢谢,

您使用什么版本的jQuery(和jQueryUI)?jQueryUI 1.6.x的旧版本似乎有一个与此相关的bug。

我在我的一个旧项目中也做了同样的事情。它包括在3个不同的栏中拖动新闻面板。下面是我用于拖放的javascript(jquery):

$(function(){
    $( ".sortable" ).sortable({
            revert: true, 
            scroll: true,
            connectWith: '.sortable',
            placeholder: 'placeholder',
            forcePlaceholderSize: true,
            handle: $('h2'),
            stop: update_user,
            zIndex: 200,
            start: start_drag,
            appendTo: $('.sortable')
    });

 });
您可以检查jQueryUIAPI中的不同选项

因此,如果对象被删除,javascript操作更新用户将被触发

function update_user(){     

$.ajax({
   type: "POST",
   url: "/<controller>/<action>/",
   data: "data="+<data>",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
     });
}

我希望这将有助于你的方式

我正在使用:jQueryUI1.7.2和jQuery1.4.4,所以这不是问题所在。刚刚更新到jQueryUI1.8.x,我仍然有同样的问题。我实际上正在使用Rails助手方法创建我的Javascript,所以我几乎无法直接更改Javascript代码。不过还是谢谢你的帮助。我刚刚添加了代码ui.draggable.remove();完成远程功能后,它工作了。谢谢你的帮助
raise params[:data].inspect