我正在尝试为我的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在发送它之前用它的值替换它:(。
另外我意识到在视图中使用这样的功能逻辑不是最好的风格,我愿意接受建议。
答案 0 :(得分:0)
我设法通过AJAX服务器调用来解决这个问题,每次用户滚动到Feed的底部时,为 @news_limit 明确分配必要的值。
我使用的技术类似于:http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html