1

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 をレンダリングに送信する前にその値に置き換える方法がわかりません :(.

また、このような関数ロジックをビューに含めるのは最適なスタイルではないことも認識しており、提案を受け付けています。

4

1 に答える 1

0

ユーザーがフィードの一番下までスクロールするたびに、@news_limitに必要な値を明示的に割り当てるために、AJAX サーバー呼び出しでこれを解決することができました。

私は次のようなテクニックを使用しました: http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

于 2013-06-12T15:57:20.283 に答える