我正在尝试为我的 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 在将其发送到渲染之前将其替换为它的值 :(。
我也意识到在视图中包含这样的功能逻辑并不是最好的风格,我愿意接受建议。