Ruby on rails Rails和jQuery发送Ajax请求
您好,我目前有一个Rails应用程序,它使用jQuery库来运行ajax请求。但是,我遇到了一个小问题,因为发出的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,
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