티스토리 뷰

안녕하세요 강정호입니다. 이번 포스팅에서는 블로그에 가입한 모든 회원을 리스트로 보여주는 기능을 구현해보겠습니다.



1단계 : 라우터와 UserController에 메서드 생성


라우터

GET /users(.:format)               users#index


라우터가 위와 같이 설정되어 있기 때문에 UserController에 index 메서드를 생성하여 요청을 받을 수 있도록 합니다.

class UsersController < ApplicationController

def index
@users = User.all
end

모든 User 객체를 DB로부터 받아옵니다. 이를 @users에 할당하고 users 폴더의 index.html.erb 페이지에 전달합니다.



2단계 : 사용자 리스트 화면 생성


index.html.erb 의 소스코드는 다음과 같습니다.

<h1 align = "center">All Alpha Bloggers</h1>
<div align="center">
<%= @users.each do |user| %>
<ul class="listing">
<div class="row">
<div class = "well col-md-4 col-md-offset-4">
<li><%= link_to gravatar_for(user), user_path(user) %></li>
<li>
<%= link_to user.username, user_path(user) %>
</li>
<li>
<small><%= pluralize(user.articles.count, "article") if user.articles %></small>
</li>
</div>
</div>
</ul>

<%end %>

- @users.each do |user|   : Controller로부터 List 형태로 user를 받았기 때문에 반복문을 돌려 유저가 리스트로 보일 수 있도록 합니다. 


- <%= link_to gravatar_for(user), user_path(user) %>

- <%= link_to user.username, user_path(user) %>

위의 코드에서 링크를 주는데 왜 gravatar_for, user.username을 앞에 입력하는지 몰랐는데 그 차이를 말해드릴게요.


[gravatar_for(user)와 user.username이 있을 때]

[gravatar_for(user)와 user.username이 없을 때]


위의 경우 링크 주소를 적용하는 문자열이 없습니다.


- pluralize 메서드 : 링크


pluralize(count, singular, plural = nil) public

Attempts to pluralize the singular word unless count is 1. If plural is supplied, it will use that when count is > 1, otherwise it will use the Inflector to determine the plural form.

pluralize(1, 'person')
# => 1 person

pluralize(2, 'person')
# => 2 people

pluralize(3, 'person', 'users')
# => 3 users

pluralize(0, 'person')
# => 0 people

위와 같이 단수형 단어를 pluralize 메서드를 사용하면 복수형으로 변경합니다. 그래서 단수형 article을 복수형 articles로 변경할 수 있습니다.


결과 화면은 다음과 같습니다.


이상으로 포스팅을 마치겠습니다.

댓글