RubyOnRails 4) Search 검색하기
Search 검색기능을 처리해주기 위해 먼저, Navbar view를 처리해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | \app\views\posts\_navbar.html.erb <form class="form-inline my-2 my-lg-0" action="/posts/search" method="get"> <div class="form-group"> <select name="cate" class="form-control" id="exampleFormControlSelect1"> <option value="1">제목</option> <option value="2">내용</option> <option value="3">제목+내용</option> <option value="4">작성자</option> </select> </div> <input name="q" class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> </form> | cs |
그 다음, posts Controller에 action을 추가해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | \app\controllers\posts_controller.rb # 검색하기 ------------------------------------------------- def search if params[:cate] == "1" @posts =Post.where("title LIKE ?", "%#{params[:q]}%") elsif params[:cate] == "2" @posts =Post.where("content LIKE ?", "%#{params[:q]}%") elsif params[:cate] == "3" #OR 처리 @posts =Post.where("title LIKE ? OR content LIKE ?", "%#{params[:q]}%","%#{params[:q]}%") elsif params[:cate] == "4" #작성자 검색은 조금 다름 @posts = User.where("username LIKE ?","%#{params[:q]}%").take.posts endend end | cs |
마지막으로, Route와 View를 처리해준다.
1 2 3 4 5 6 | \config\routes.rb get 'posts/search' \app\views\posts\search.html.erb 파일 추가 후에 index.html.erb 내용 복사 | cs |
------------------------------------------------------------------------------------------------------------------------------------------------------
번외
시간 알려주기.
1) application.rb 에 config.time_zone 주석 풀고 seoul 걸기
2) 원하는 출력부에 <%= time_ago_in_words(@post.created_at)%> ago 코드 추가
'Archived(Programming) > Ruby on Rails(기초)' 카테고리의 다른 글
RubyOnRails 6) Carrierwave 이미지 첨부 기능 (0) | 2018.12.28 |
---|---|
RubyOnRails 5) Like 좋아요 기능 (0) | 2018.12.28 |
RubyOnRails 3) Devise 기본 (0) | 2018.12.26 |
RubyOnRails 2) Model 관계 설정 (0) | 2018.12.26 |
RubyOnRails 1) CRUD 기본 (0) | 2018.12.24 |