显示Rails的旋转器3 UJS获取Type错误
我的Rails 3应用程序中有三个链接,使用UJS将信息加载到它们下面的容器中。 为了完成体验,我希望在信息加载时显示一些“正在加载…”文本。 所以我使用了Simone Carletti的post中的一些jQuery来尝试完成它。 但是,根据jQuery,单击第一个链接时会发生两种不同的事情。 (在这两种情况下,单击其他两个时都不会发生任何事情。)
- 鉴于下面的代码,我得到
TypeError: 'undefined' is not a function (evaluating '$("#tabs-1").js(data)')
所以要解决这个问题,我将我的jQuery更改为$("#tabs-1").html(data);
。 然后:
- TypeError消失了
- “正在加载……”没有显示
- 单击我的第一个链接会呈现各种未格式化的无关代码,例如:
- $(“#tabs-1”)。html(“\ n Text:
\ n \ n text。
\ n
\ n
\ n
生成的HTML:
我的profiles_controller.rb
操作加载信息的示例:
def profile_about @profile = Profile.find(params[:id]) respond_to do |format| format.js { render :layout => nil } end end
我的个人资料_about.js.erb:
$( "#tabs-1" ).html( " "profile_about" ) ) %>" );
我的application.js:
$(function() { var toggleLoading = function() { $("span#loading").toggle() }; $("#profile_loader") .bind("ajax:loading", toggleLoading) .bind("ajax:complete", toggleLoading) .bind("ajax:success", function(event, data, status, xhr) { $("#tabs-1").js(data); }); });
在我的CSS中:
span#loading { float:right; padding:10px 5px; color:#666666; }
在我的
:
更新:
如果我删除了respond_to format.js和format.xml并且仅保留format.html,则删除profile_about.js.erb,并将绑定保持为.html(数据),控制台说:
ActionView:MissingTemplate (Missing template profiles/profile_about with {:handlers=>[:rxml, :builder, :rjs, :erb, :rhtml], :locale=>[:en, :en], :formats=>[:html] in view paths "/Users/me/Desktop/app/views", "/Users/me/Desktop/app/vendor/plugins/paperclip/app/views"): app/controllers/profiles_controller.rb:87:in 'profile_about' #format.html app/controllers/profiles_controller.rb:86:in 'profile_about' #the respond_to to |format| Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.5/lib/action_dispatch/middleware/templates/rescues/missing_template.erb within rescues/layout
我通过在这个问题中找到的jQuery替换我正在使用的jQuery(上面)来实现它 。 它比我正在使用的jQuery简单得多。
$(function() { $('#loading') .hide() // hide initially .ajaxStart(function(){ $(this).show(); }) .ajaxStop(function(){ $(this).hide(); }) });
我还在上面的问题中对代码进行了一些小的更改,以使其工作。 特别是我删除了:在我的css中display:none
,在我的控制器操作中删除了format.html和format.xml。
您目前有三个具有相同ID的链接; 这是无效的HTML,会导致问题。
不知道你在尝试使用.js
东西; 我甚至认为这不是一个jQuery方法。
您可以使用JS或HTML来执行此操作,但我不建议同时使用 – 删除xml和js respond_to,只保留html。 删除JS erb文件。
在“ajax:success”绑定中,将其保留为.html(data)
。
假设其他所有内容都已正确设置,这应该是您需要做的全部内容。
您使用的是哪个版本的Rails?