Guest User

Untitled

a guest
Oct 19th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. ## kaminari gem で twitter 風の AutoPagerize が簡単に実現できるのか調べた
  2.  
  3. * ウィンドウ下部までスクロールしたら発火するイベントをつくる。ただし、今回の例では何度も発火していることがある。そのイベントで何をするかが腕のみせどころ。
  4. * link_to_next_page に次へのポインタ的な情報をセットして、コンテンツを更新したらこれも更新
  5. * $('#next_link').trigger("click"); するより $.ajax の方が HTML を組み立てやすい気がするが success でとれる情報の操作がいる。そのままだと layout 外しても豪快にとれる。
  6. * $(window) などの window を任意のエレメントにできるようにした方がよい
  7.  
  8.  
  9. ### アクション
  10.  
  11. ~~~
  12. def index
  13. @users = User.page(params[:page]).per(50)
  14. end
  15. ~~~
  16.  
  17. ### ビュー
  18.  
  19. ~~~
  20. <h1>ユーザ一覧</h1>
  21. <ul>
  22. <div id="contents">
  23. <%= render @users %>
  24. </div>
  25. </ul>
  26.  
  27. <div id="next">
  28. <%= link_to_next_page @users, '次へ', :remote => true, :id => 'next_link' %>
  29. </div>
  30. ~~~
  31.  
  32.  
  33. ### _user.html.erb
  34.  
  35. ~~~
  36. <li><%= user.name %></li>
  37. ~~~
  38.  
  39.  
  40. ### index.js.erb
  41.  
  42. ~~~
  43. var prev = $('#contents').html();
  44.  
  45. $('#contents').html(prev + '<%= escape_javascript render(@users) %>');
  46.  
  47. $('#next').html(
  48. '<%= escape_javascript(link_to_next_page(@users, '次へ', :remote => true, :id => "next_link").to_s) %>'
  49. );
  50. ~~~
  51.  
  52.  
  53. ### JS
  54.  
  55. ~~~
  56. $(window).scroll(function () {
  57. if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
  58. $('#next_link').trigger("click");
  59. }
  60. });
  61. ~~~
Add Comment
Please, Sign In to add comment