rails app中的AJAX请求错误:xhr.send((options.hasContent&& options.data)|| null);

时间:2015-12-29 02:32:21

标签: javascript jquery ruby-on-rails ajax turbolinks

我正在尝试运行一个AJAX请求,它接受我的分页链接索引并根据请求返回下一组分页链接,但是当滚动到页面底部发出请求时,我收到此错误。

xhr.send( ( options.hasContent && options.data ) || null ); 

请求似乎是在下面的查询参数下尝试获取链接的第二页,但返回500错误。

http://localhost:3000/links?page=2&_=1451357800871

Rails记录错误

ActionView::Template::Error (Missing partial links/_link with {:locale=>[:en], :formats=>[:js, "application/ecmascript", "application/x-ecmascript", :html, :text, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
  * "/Users/jackburum/personal_projects/quotes_app/app/views"
  * "/Users/jackburum/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/devise-3.5.2/app/views"
):
    1: $('#links').append('<%= j render(@links) %>');
    2: <% if @posts.next_page %>
    3:   $('.pagination').replaceWith('<%= j will_paginate(@links) %>');
    4: <% else %>
  app/views/links/index.js.erb:1:in `_app_views_links_index_js_erb___2714542505890050790_70114472173520'

即使在我创建了_links partial之后,这仍然会发生。

这是我links.coffee.js文件中脚本的代码。当我使用警报消息进行测试时,代码测试得很好,但是当我用get脚本替换警报消息时,我得到了AJAX错误。

ready = ->
    jQuery ->
        $(window).scroll ->
            if $(window).scrollTop() > $(document).height() - $(window).height() - 50
                    $.getScript($('.pagination next_page').attr('href'))

$(document).ready(ready)
$(document).on('page:load', ready)

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

1: $('#links').append('<%= j render(@links) %>');
  

缺少部分链接/ _link

当您渲染ActiveRecord模型数组时,Rails将根据这些模型的类推导出部分名称,并尝试为每个模型对象加载单独的部分名称。因此,在您的情况下,partial将为links/_link,这正是Rails根据错误消息尝试加载的内容。

  

即使我创建了_links partial

,这仍然会发生

这里有一个拼写错误,应该是_link,单数形式。这部分用于呈现一个不同的链接。