iT邦幫忙

2023 iThome 鐵人賽

DAY 5
1
Software Development

Rails 開發,每日一套件介紹! 系列 第 5

Day 5: 你的站內圖書館員 - ransack

  • 分享至 

  • xImage
  •  

Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
Rails 開發每日一套件第五天,讓我們循序漸進,輕鬆認識 Rails 開發好用的 30 個套件吧!
相信跟著我一起走完這段旅程,您也能建立出自己的常用套件庫,甚至鑑別什麼是好的套件喔!

Day 5: Ransack

好 ~ 首先這個套件的名稱我真的沒有想法...就我掰不出更有趣的由來。每次聽到這個套件名稱,我其實都直接聯想到 "for god sake"這句話...當然意義上完全不一樣,好孩子不要學。

Ransack 是一個 rails 專用的站內搜索工具,為什麼是 rails 專用呢?在文件中的第一句話就告訴你了。
Ransack will help you easily add searching to your Rails application, without any additional dependencies.
透過 rails 好用的 ActiveRecord,可以輕鬆的做出站內搜尋功能。

安裝方式

首先 bundle add 必須的。

bundle add ransack

接著,沿用官方的例子,然後假設我要在 index 搜尋 profile
你可以在 controller 中寫入.ransack的方法。
注* distinct: true 不是必須的,他只是一個條件。
至於 search params 的 :q 則是官方的預設寫法,指的是 query。如果想要調整,要在config/initializers/ransack.rb裡做調整。

def index
  @search_profiles = Profile.ransack(params[:q])
  @profile = @search_profiles.result(distinct: true)
end

接著在 view 中應用 formhelper 來帶出搜尋的結果。
這裡就依個人去調整了,看你想要怎麼樣的呈現。

<%= search_form_for @search_profile do |user| %>
  <%= user.search_field :user_name %>
  <%= user.submit %>
<% end %>

以上是最單純的用法,如果你只是要做個小巧的站內搜索,算是綽綽有餘了
另外其實還可以搜尋關聯性、做搜尋排序啦等等進階功能,就留給各位慢慢摸索啦~

總之,一樣也是簡單又實用的套件,開案必備蒐藏!
如果客製化有什麼不理解的地方,也歡迎留言詢問喔!


上一篇
Day 4: 程式開發的警備總隊 - rubocop
下一篇
Day 6: 開發中的金鑰管理者 - dotenv-rails
系列文
Rails 開發,每日一套件介紹! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言