【问题标题】:Getting XHR pagination working with HAML + Kaminari让 XHR 分页与 HAML + Kaminari 一起使用
【发布时间】:2012-05-09 01:54:57
【问题描述】:

我正在使用基于 HAML 的模板,而 Kaminari 似乎破坏了我的分页。我确定这是我的错,但这是我的模板的样子:

:javascript
  $(function() {
    $('#events').html('<%= escape_javascript render(@events) %>');
    $('#paginator').html('<%= escape_javascript(paginate(@events, :remote => true).to_s) %>');
  });

    %ul.activity_list
      #events
        = render :partial => 'event'

我的 _event.html.haml 看起来像:

- @events.each do |event|
  = display_event(event)

最后:

  %nav
      %ul.pagination
        #paginator
          = paginate @events, :remote => true

当我加载页面时发生的事情是分页事件应该在哪里,我确实看到了以下标记:

&amp;lt;%= escape_javascript render(@events) %gt;

它在网站上呈现为:

&lt;%= escape_javascript render(@events) %&gt;

我在这里做错了什么才能在此处启用 XHR 分页?

更新

根据 Dylan 的要求,我已将我的 javascript 更新为以下内容:

:javascript
  $(function() {
    $('#events').html('#{escape_javascript render('event')}');
    $('#paginator').html('#{escape_javascript(paginate(@events, :remote => true).to_s)}');
  });

XHR 似乎在工作,但由于某种原因,它永远不会超过 page=2。这个特定的 fetch 总共应该有 3 页,并且只会在第 1 页和第 2 页之间翻转。有什么原因吗?

【问题讨论】:

    标签: ruby-on-rails ruby pagination haml kaminari


    【解决方案1】:

    您正在尝试在 haml 文件中使用 erb 标签。您应该使用 haml 的插值 ruby​​ 代码版本(#{} 而不是 &lt;%= %&gt;):

    :javascript
      $(function() {
        $('#events').html('#{escape_javascript render(@events)}');
        $('#paginator').html('#{escape_javascript(paginate(@events, :remote => true).to_s)}');
      });
    

    Haml documentation about this

    【讨论】:

    • 那是废话 - String:Class 的未定义方法 `model_name'。任何想法?它似乎在 $('#events') 位上死亡。
    • 确实,在我注释掉 javascript 之后,除了 XHR 位之外,一切正常。 (显然)
    • 您确定@events 包含您的事件,而不是字符串吗?
    • @events 包含一个字符串数组,它不是 ActiveRecord 对象的集合。也许我应该在我的问题中说明这一点。但是,是的,这只是我从 Redis 中提取的一组哈希值,我正在用 Kaminari 按摩以进行分页。
    • 我相信 render(@events) 只需要一个 ActiveRecord 对象数组。您可以尝试 render 'event' 渲染您的 _event 部分,然后迭代您的 @events 数组。
    猜你喜欢
    • 2014-02-20
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2012-01-01
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多