iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
0
自我挑戰組

Ruby and Rails 的二三事系列 第 17

Ruby and Rails 的二三事 - Day17 如何實作搜索表單

  • 分享至 

  • xImage
  •  

最近做專案,正好做到 搜尋的功能,
今天就稍微紀錄一下囉!

對先前的form 還有印象嗎?讓我們來快速複習一下:

預備知識:

  • form_for :配合Model所建立的表單(如:POST 或 EDIT)
  • form_tag :不須配合Model技能建立的表單(如:這次要做的搜尋功能)

Step1. 建立搜尋表單。

# app/views/events/index.html.erb
<%= form_tag(events_path, :method => "get") do %>
<%= text_field_tag :search %> 
<%= submit_tag "Search" ,:event_name => nil ,class: "but-primary"%> 
  • 小叮嚀:events_path, :method => "get" 就是你搜尋結果要呈現的頁面,
    要依據你自己設定的routes去設定喔!

Step2. 將參數[:search]加入到 EventsController 裡。
前面在表單裡填入的關鍵字將會被包在params中傳進來。

# app/controllers/events_controller.rb
class EventsController < ApplicationController
  def index
    @events = Event.all.search(params[:search])
  end
end
  • 小技巧:如果想了解params[:search]是什麼,
    可以用 render 的方式來觀察喔!
def index
    #@events = Event.all.search(params[:search])
    render html: params[:search]
  end

Step3. 在Event Model中建立一個search的方法。
針對在搜索表單中輸入的關鍵字將以search方法進行處理。
如果有一個與關鍵字匹配的用戶名,結果將顯示在頁面上。
如果沒有部分匹配的用戶名,則所有用戶名將顯示為所有列表。

#app/models/event.rb
def self.search(search) 
     if search
       where(['event_name LIKE ?', "%#{search}%"]) #
     else
       all 
    end
  end

嗯,大概就是這樣啦!鐵人賽我們明天見!!

參考資料:
Simple Search Form in Rails
Creating A Search Form In Rails 5
【rails入門】検索フォームを簡単に実装する方法


上一篇
Ruby and Rails 的二三事 - Day16 && / and /| |/ or
下一篇
Ruby on Rails 的二三事 - Day18 鐵道裡的春天
系列文
Ruby and Rails 的二三事19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言