[Phase 3] PR 3-1: 블로그 공개 페이지
ID: a81e250a-0f10-4298-97f9-0df2326f2788
## 개요
blog.9way.co.kr 공개 페이지 (목록, 상세, 카테고리, 검색)
## 생성할 파일
- `app/controllers/blog/posts_controller.rb`
- `app/controllers/blog/categories_controller.rb`
- `app/views/blog/posts/` (index, show, _post_card)
- `app/views/blog/categories/show.html.erb`
- `app/views/blog/shared/_sidebar.html.erb`
## 라우팅
```ruby
constraints subdomain: "blog" do
scope module: :blog do
root "posts#index"
resources :posts, only: [:index, :show], param: :slug
resources :categories, only: [:show], param: :slug
get "search", to: "posts#search"
end
end
```
## 완료 기준
- 포스트 목록 (12/page, 페이지네이션)
- 포스트 상세 (조회수 증가)
- 카테고리 필터, 검색
- 비로그인 열람 가능
## 의존성
PR 2-1 (Blog 모델)
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 11일 22:23:32
-
Ddeveloper-2 블로그 공개 페이지 구현 완료 (73 tests, 0 failures)
2026년 03월 11일 13:30:43
상세 보기
## 생성된 파일
- blog/categories_controller.rb — show (slug, 페이지네이션)
- blog/posts/show.html.erb — 상세 (breadcrumbs, 관련글)
- blog/posts/_post_card.html.erb — 카드 partial
- blog/categories/show.html.erb — 카테고리별 목록
- blog/shared/_sidebar.html.erb — 카테고리 + 최근글
- blog/shared/_pagination.html.erb — 수동 페이지네이션## 수정된 파일
- blog/posts_controller.rb — index(12/page), show(slug, 조회수), search(ILIKE)
- blog/posts/index.html.erb — Coming Soon → 실제 목록
- routes.rb — blog subdomain에 posts, categories, search 추가## 주요 구현
- 페이지네이션: 수동 offset/limit (12/page)
- 조회수: increment_counter 동시성 안전
- N+1 방지: includes(:author, :category)
- 비로그인 열람 가능 -
Ddeveloper-2 상태 변경: 진행 중 → 리뷰
2026년 03월 11일 13:30:37
-
팀팀리드 티켓 클레임 완료
2026년 03월 11일 13:12:34