###パーシャルのリファクタリング
railsの便利なツールを使ってコードを整理する
####indexビューに対する最初のリファクタリング
app/views/users/index.html.erb
<% provide(:title, 'All users') %>
<h1>All users</h1>
<%= will_paginate %>
<ul class="users">
<% @users.each do |user| %>
<%= render user %>
<% end %>
</ul>
<%= will_paginate %>
####各ユーザーを表示するパーシャル
app/views/users/_user.html.erb
<li>
<%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
</li>
####indexページの完全なリファクタリング
app/views/users/index.html.erb
<% provide(:title, 'All users') %>
<h1>All users</h1>
<%= will_paginate %>
<ul class="users">
<%= render @users %>>
<!--Railsは@users をUserオブジェクトのリストであると推測-->
<!--ユーザーのコレクションを与えて呼び出すと、
Railsは自動的にユーザーのコレクションを列挙し、
それぞれのユーザーを_user.html.erbパーシャルで出力します。-->
</ul>
<%= will_paginate %>
#####テスト
ubuntu:~/environment/sample_app (updating-users) $ rails t
Running via Spring preloader in process 13391
Started with run options --seed 44048
39/39: [============================] 100% Time: 00:00:03, Time: 00:00:03
Finished in 3.78213s
39 tests, 131 assertions, 0 failures, 0 errors, 0 skips
###演習
1.
リスト 10.52にあるrenderの行をコメントアウトし、テストの結果が red に変わることを確認してみましょう。
ubuntu:~/environment/sample_app (updating-users) $ rails t
Running via Spring preloader in process 13535
Started with run options --seed 33825
FAIL["test_index_including_pagination", #<Minitest::Reporters::Suite:0x0000563856c5da48 @name="UsersIndexTest">, 2.744917383000029]
test_index_including_pagination#UsersIndexTest (2.74s)
Expected at least 1 element matching "a[href="/users/14035331"]", found 0..
Expected 0 to be >= 1.
test/integration/users_index_test.rb:19:in `block (2 levels) in <class:UsersIndexTest>'
test/integration/users_index_test.rb:18:in `block in <class:UsersIndexTest>'
39/39: [============================] 100% Time: 00:00:03, Time: 00:00:03
Finished in 3.65557s
39 tests, 102 assertions, 1 failures, 0 errors, 0 skips
Expected at least 1 element matching "a[href="/users/14035331"]", found 0..
Expected 0 to be >= 1.```
1以上の方がいいらしい。