TH's Notes
  • Home
  • Categories
  • Tags
  • Archives

實作簡易的搜尋功能

在電子商務中,商品的搜尋是很重要的一環, 這裡將介紹如何實作簡易的搜尋功能。

倘若我們現在希望開發一個搜尋影片的功能; 假設影片的類別名稱是 Video, 首先在 config/routes.rb 裡面加入 search 的路徑

  resources :videos, only: [:show] do
    collection do
      get 'search', to: 'videos#search'
    end
  end

接著在 app/controllers/videos_controller.rb 裡面加入 search action

  def search
    @videos = Video.search_by_title(params['search_term'])
  end

然後在 app/models/video.rb 裡面新增 search_by_title 方法

  def self.search_by_title(str)
    return [] if str.blank?
    where("title LIKE ?" , "%#{str}%").order("created_at DESC")
  end

這裡使用 Haml 來撰寫 views; 若想為網站的 header 加入搜尋欄位, 請在 app/views/shared/_header.html.haml 裡面加入

  = form_tag search_videos_path, method: 'get', class: 'col-md-5 navbar-form'  do
    = text_field_tag :search_term, params['search_term'] ||= '', class: 'form-control', placeholder: "Search for videos here"
    = submit_tag 'Search', class: 'btn btn-default'

最後,新增搜尋頁面 app/views/videos/search.html.haml

- @videos.each do |video|
  .video.ul
    .li
      #{video.title}
    .li
      = image_tag(video.cover_image_url, size: cover_image_size)
Comments
comments powered by Disqus

  • « 安全地設定 Rails 郵件密碼
  • iTerm2 中好用的設定 »

Published

Dec 2, 2014

Category

Web

Tags

  • rails 63
  • Powered by Pelican. Theme: Elegant by Talha Mansoor