[Rails5]ransack은 뭐야?
소개
Rails의 공부로서 gem 주위를 만져 보는 기획입니다.
이번에는...
ransack
시도해 보겠습니다.
무슨 젬이야?
간단히 말하면 검색 기능을 구현할 때 사용할 gem입니다.
사용할 기회는 상당히 있을 것 같으므로, 기억하기 위해서도 시도해 봅시다.
검증 환경
다음 환경에서 실시했습니다.
[client]
・MacOS Mojave(10.14.2)
・Vagrant 2.2.2
・VBoxManage 6.0.0
[virtual]
・CentOS 7.6
・Rails 5.2.2
・ruby 2.3.1
참고까지.
ransack 소개
1.gem 설치
사전에 Rails 공부용으로 작성한 프로젝트로 진행합니다.
각 MVC는 적당히 게시판 앱을 상정하여 Posts 컨트롤러 등을 생성 완료되었습니다.
(index, show, edit의 빈 페이지를 볼 수있는 정도)
$ rails g model post
$ rails g controller posts index show edit
그 전제하에 Gemfile에 다음을 추가한다.
Gemfile# ransack
gem 'ransack'
추가하면 설치.
$ bundle install
-----------
Fetching ransack 2.1.1
Installing ransack 2.1.1
-----------
→無事に完了。
2.ransack을 사용해보기
즉시 ransack을 사용하여 구현해 보겠습니다.
(※DB에는 사전에 더미 데이터를 적당히 복수건 돌진하고 있습니다.)
posts_controller.rbdef index
# ransack
@search = Post.ransack(params[:q])
@posts = @search.result
end
index.html.erb<h1>Posts#index</h1>
<p>Find me in app/views/posts/index.html.erb</p>
<%= search_form_for @search, url: posts_index_path do |f| %>
<%= f.label :name_cont, '名前' %>
<%= f.search_field :name_cont %>
<%= f.submit '検索' %>
<% end %>
<table>
<thead>
<tr>
<th><%= sort_link(@search, :name) -%></th>
<th><%= sort_link(@search, :content) -%></th>
</tr>
</thead>
<tbody>
<% @posts.each do |post| %>
<tr>
<td><%= post.name -%></td>
<td><%= post.content -%></td>
</tr>
<% end %>
</tbody>
</table>
3. 동작 확인
그럼 서버를 시작해 페이지를 보자.
이와 같이 유상무상 데이터군에 대하여
"hanako"로 검색을 걸면 제대로 좁힐 수있었습니다!
「Name」과 「Content」의 소트도 포치 누르면,
제대로 정렬된 것 같습니다.
완성!
소감
뭔가 데이터를 목록 화면에 표시하는 시스템은
이러한 검색 기능은 기본적으로 원세트인 것이 많네요.
수작업으로 로직을 짜면 대단히 & 공수도 낭비에 걸려 버리므로,
gem을 활용해 가고 싶습니다!
결론
뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!
Reference
이 문제에 관하여([Rails5]ransack은 뭐야?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/betti/items/a2664ef5c48682d33a38
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[client]
・MacOS Mojave(10.14.2)
・Vagrant 2.2.2
・VBoxManage 6.0.0
[virtual]
・CentOS 7.6
・Rails 5.2.2
・ruby 2.3.1
1.gem 설치
사전에 Rails 공부용으로 작성한 프로젝트로 진행합니다.
각 MVC는 적당히 게시판 앱을 상정하여 Posts 컨트롤러 등을 생성 완료되었습니다.
(index, show, edit의 빈 페이지를 볼 수있는 정도)
$ rails g model post
$ rails g controller posts index show edit
그 전제하에 Gemfile에 다음을 추가한다.
Gemfile
# ransack
gem 'ransack'
추가하면 설치.
$ bundle install
-----------
Fetching ransack 2.1.1
Installing ransack 2.1.1
-----------
→無事に完了。
2.ransack을 사용해보기
즉시 ransack을 사용하여 구현해 보겠습니다.
(※DB에는 사전에 더미 데이터를 적당히 복수건 돌진하고 있습니다.)
posts_controller.rb
def index
# ransack
@search = Post.ransack(params[:q])
@posts = @search.result
end
index.html.erb
<h1>Posts#index</h1>
<p>Find me in app/views/posts/index.html.erb</p>
<%= search_form_for @search, url: posts_index_path do |f| %>
<%= f.label :name_cont, '名前' %>
<%= f.search_field :name_cont %>
<%= f.submit '検索' %>
<% end %>
<table>
<thead>
<tr>
<th><%= sort_link(@search, :name) -%></th>
<th><%= sort_link(@search, :content) -%></th>
</tr>
</thead>
<tbody>
<% @posts.each do |post| %>
<tr>
<td><%= post.name -%></td>
<td><%= post.content -%></td>
</tr>
<% end %>
</tbody>
</table>
3. 동작 확인
그럼 서버를 시작해 페이지를 보자.
이와 같이 유상무상 데이터군에 대하여
"hanako"로 검색을 걸면 제대로 좁힐 수있었습니다!
「Name」과 「Content」의 소트도 포치 누르면,
제대로 정렬된 것 같습니다.
완성!
소감
뭔가 데이터를 목록 화면에 표시하는 시스템은
이러한 검색 기능은 기본적으로 원세트인 것이 많네요.
수작업으로 로직을 짜면 대단히 & 공수도 낭비에 걸려 버리므로,
gem을 활용해 가고 싶습니다!
결론
뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!
Reference
이 문제에 관하여([Rails5]ransack은 뭐야?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/betti/items/a2664ef5c48682d33a38
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!
Reference
이 문제에 관하여([Rails5]ransack은 뭐야?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/betti/items/a2664ef5c48682d33a38텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)