显示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:

 
# load info here

我的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?

Interesting Posts