但是,在我更新列表后,就像Js没有被重新加载,我必须刷新整个页面才能让事情再次滚动.
我已经尝试了所有的东西,甚至借用了demo jQuery application from Ryan Bates Esq. over here.但是在我将部分Js shizzle放入部分之后也无效.
我确定这很简单,但我是一个AJAX / jquery新手,我真的很挣扎.
视图:
#test_one = render "test_one"
部分“test_one”
= form_for @location,:remote => true do |f| %table %tr= collection_select(:location,:type_IDs,Type.all,:ID,:name,{:prompt => true},:multiple => true,:class=>"chzn-select") %tr %td %ul#types.unstyled{"data-update-url" => sort_types_locations_url} - @types.each do |type| = content_tag_for :li,type do %span.handle [Drag] = type.name
update.Js.erb
$("#test_one").HTML('<%= escape_JavaScript render("test_two") %>');
在我的控制器中:
def update @location = Location.find(params[:ID]) @types = @location.types.order('location_types.position').limit(2) respond_to do |format| if @location.update_attributes!(params[:location]) flash[:notice] = 'Settings updated successfully' format.HTML { redirect_to edit_location_path } format.Js else format.HTML { render action: "edit_access" } format.Js { render action: "update_access_errors" } end end end
最后在locations.Js.coffee中
jquery -> $('#types').sortable( axis: 'y' update: -> $.post($(this).data('update-url'),$(this).sortable('serialize')) )
更新工作,我没有错误,我的控制台中什么都没有.现在我已经失去了很多 – 在更新记录后如何让Js重新加载?
解决方法 原因是,您的自定义Js(关于可排序)在文档就绪时加载,并且一旦部分更新就不会再次触发.解决方案是:将自定义Js包装到函数中.文档就绪和更新发生时调用此函数.
# locations.Js.coffee$-> $(document).custom_Js()$.fn.custom_Js -> $('#types').sortable( axis: 'y' update: -> $.post($(this).data('update-url'),$(this).sortable('serialize')) )# update.Js.erb$("#test_one").HTML('<%= escape_JavaScript render("test_two") %>');$(document).custom_Js();
关于自定义Js函数的附注:这里不需要包含所有自定义代码,只需要与AJAX将要添加/更新的内容相关的部分.
总结以上是内存溢出为你收集整理的Rails – 为什么远程提交表单后jQuery无法加载全部内容,希望文章能够帮你解决Rails – 为什么远程提交表单后jQuery无法加载所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)