1

我正在尝试为我的 rails 应用程序创建新闻提要。但是,我遇到了更新正在显示的新闻故事数量的问题。以下代码来自我的观点。

当某个 div 滚动到底部时,我想在相同 id 的 div 中重新渲染部分“recent_news_content”。但是,当我转义 javascript 以重新渲染时,我无法访问我的newsLimit变量,并且我不知道如何(并且不认为我可以)@news_limit从 HAML(或任何与此相关的视图)修改或创建新的 ruby​​ 变量在我的重新渲染声明中访问。

%h4#recent-news-header.center.top-header Recent News
  %div#recent-news-box.bordered.selectable
    %div#recent-news-content
      = render :partial => "recent_news_content", :locals => {:news_limit => @news_limit}

:javascript
  $(document).ready(function() {
    var newsLimit = @news_limit
    $("#recent-news-box").bind('scroll',function(e) {
      var elem = $(e.currentTarget);
      if (elem[0].scrollHeight - elem.scrollTop() < elem.outerHeight()) {
        newsLimit += 5;
        $('#recent-news-content').html("#{escape_javascript(render :partial => 'recent_news_content', :locals => {:news_limit => newsLimit})}");
      }
    });
  });

最后一个 newsLimit 未被识别(因为我转义了 javascript),我无法弄清楚如何让 javascript 在将其发送到渲染之前将其替换为它的值 :(。

我也意识到在视图中包含这样的功能逻辑并不是最好的风格,我愿意接受建议。

4

1 回答 1

0

我设法通过 AJAX 服务器调用解决了这个问题,每次用户滚动到提要底部时,为@news_limit显式分配必要的值。

我使用了类似的技术:http ://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

于 2013-06-12T15:57:20.283 回答