传递javascript变量以在HAML中呈现调用:javascript标记

时间:2013-06-07 19:15:23

标签: jquery ruby-on-rails escaping haml

我正在尝试为我的rails应用创建新闻Feed。但是我遇到了更新正在播放的新闻报道数量的问题。以下代码来自我的观点中的部分内容。

当某个div滚动到底部时,我想重新渲染同一id的div中的部分'recent_news_content'。但是,当我为了重新渲染而逃避javascript时,我无法访问我的newsLimit变量,我不知道如何(并且不认为我可以)修改@news_limit或从中创建新的ruby变量HAML(或任何相关的观点)可以在我的重新发布声明中访问。

%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在发送它之前用它的值替换它:(。

另外我意识到在视图中使用这样的功能逻辑不是最好的风格,我愿意接受建议。

1 个答案:

答案 0 :(得分:0)

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

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