Rails アプリのニュース フィードを作成しようとしています。ただし、表示されるニュース記事の数を更新する際に問題が発生しています。次のコードは、私の見解では部分的なものです。
特定の div が下にスクロールされたときに、同じ id の div の部分的な 'recent_news_content' を再レンダリングしたい。ただし、再レンダリングするために JavaScript をエスケープすると、自分の変数にアクセスできず、HAML (またはそのビュー) から新しい ruby 変数をnewsLimit
変更または作成する方法がわかりません (できるとは思いません)。@news_limit
私の再レンダリングステートメントでアクセスします。
%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 をレンダリングに送信する前にその値に置き換える方法がわかりません :(.
また、このような関数ロジックをビューに含めるのは最適なスタイルではないことも認識しており、提案を受け付けています。