ユーザー一覧をページ単位に表示
ブートストラップのページ化スタイルを使ってユーザー一覧をページ単位で表示できるようにします。
以下、「Ruby on Rails Tutorial」の9章を参考に行います。
参考資料ページの6.参照
●gemをインストール
$ vi Gemfile
gem 'will_paginate', '3.0.4'
gem 'bootstrap-will_paginate', '0.0.9'
$ bundle install
●ユーザー一覧のビューをページ化
$ vi app/views/users/index.html.erb
下記のように最初と最後にページ用リンクを設定するため<%= will_paginate %>を記述します。
・will_paginateメソッドは、@userオブジェクトを自動で探し、他のページを表示するためのページリンクを表示します。
ただし、現時点では@userオブジェクトには"User.all"で取得した全ユーザー情報が保持されているので、paginateメソッドを使ってページ単位に設定する必要があります。
●Usersコントローラのindexアクションをページ化
$ vi app/controllers/users_controller.rb
デフォルトは、1ページ当りの表示数が30なので、5に変更しています。
●動作確認
5人以上のユーザーと登録すると、ページ一覧がページ化されて表示されるようになりました。
ページの上下にページ用のリンクが表示されました。
参考資料ページの6.参照
●gemをインストール
$ vi Gemfile
gem 'will_paginate', '3.0.4'
gem 'bootstrap-will_paginate', '0.0.9'
$ bundle install
●ユーザー一覧のビューをページ化
$ vi app/views/users/index.html.erb
下記のように最初と最後にページ用リンクを設定するため<%= will_paginate %>を記述します。
<% provide(:title, 'ユーザー一覧') %>
<h1>ユーザー一覧</h1>
<%= will_paginate %>
<ul class="users">
<% @users.each do |user| %>
<li>
<%= link_to user.name, user %>
</li>
<% end %>
</ul>
<%= will_paginate %>
・will_paginateメソッドは、@userオブジェクトを自動で探し、他のページを表示するためのページリンクを表示します。
ただし、現時点では@userオブジェクトには"User.all"で取得した全ユーザー情報が保持されているので、paginateメソッドを使ってページ単位に設定する必要があります。
●Usersコントローラのindexアクションをページ化
$ vi app/controllers/users_controller.rb
def index
@users = User.paginate(page: params[:page], :per_page => 5)
end
デフォルトは、1ページ当りの表示数が30なので、5に変更しています。
●動作確認
5人以上のユーザーと登録すると、ページ一覧がページ化されて表示されるようになりました。
ページの上下にページ用のリンクが表示されました。
| アプリ作成 | 10:39 | comments:0 | trackbacks:0 | TOP↑