[Rails5]ransack은 뭐야?

4290 단어 루비Railsransack

소개



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.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을 활용해 가고 싶습니다!

결론



뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!

좋은 웹페이지 즐겨찾기