RubyOnRails 9) Category 나누기
여러 게시글들을 카테고리에 맞게 나눠서 관리할 수 있도록 하고자 한다.
먼저 Post 모델에서 category field를 추가한다.
1 2 3 | $ rails g migration add_category_to_posts category:integer ($ rails g migration AddCategoryToPosts category:integer) $ rails db:migrate | cs |
그 다음 Routes.rb 파일에서 카테고리 ID를 나눠서 get으로 접근할 수 있도록 새롭게 지정해준다.
또한 해당 Index에서 글쓰기를 눌렀을 때, 카테고리에 맞는 게시글을 쓸 수 있도록 new도 변경.
1 2 3 4 | Routes.rb ... get 'posts/index/:category' => 'posts#index' get 'posts/new/:category' => 'posts#new' ... | cs |
그리고, 기존의 index에서 Post를 전부 넘겨줬다면 이제는 해당 category에 맞는 Post만 넘겨주기 위해 다음의 수정을 거친다.
1 2 3 4 5 6 7 8 | /app/controllers/posts_controller.rb ... # 해당 분류별로 보여주기 def index @category = params[:category] @posts = Post.where("category like ?", "%#{params[:category]}%").order("created_at DESC").page(params[:page]).per(10) @page = (params[:page]).to_i end ... | cs |
다음, new.html.erb의 view 파일에서 category 값을 hidden input으로 넘겨줘야 한다.
이걸 controller에서도 마찬가지로 field 값을 지정해줘야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /app/controllers/posts_controller.rb ... def new @category = params[:category] end def create ~~ @post.category = params[:category] ~~ end ... /app/view/new.html.erb ... <input type="hidden" name="category" value=<%=@category%>></input> ... | cs |
그리고 모든 게시판 종류를 볼 수 있는 mainPage View를 추가하거나 할 수 있다.
(물론, 따로 mainpage를 두지않고 다음과 같이 navbar를 통해서 이동하는 것도 가능하다)
마지막으로, View 파일에서 기존에 뒀던 링크들을 전부 바뀌어진 category가 고려된 link로 수정한다.
'Archived(Programming) > Ruby on Rails(기초)' 카테고리의 다른 글
RubyOnRails 10) Tinymce Text편집기 (0) | 2019.01.01 |
---|---|
RubyOnRails 8) Impressionist 조회수 구현 (0) | 2018.12.30 |
RubyOnRails 언어 설정 (0) | 2018.12.30 |
RubyOnRails 7) Pagination 페이지 나누기 (0) | 2018.12.29 |
RubyOnRails 6) Carrierwave 이미지 첨부 기능 (0) | 2018.12.28 |