はじめに
本記事では、7つのアクション以外である
searchアクション
について記述します。
本日オリジナルアプリで実装したためアウトプットいたします。
結論
いきなりですが、コードを載せます。
私のオリジナルアプリは食べ物に関係したものです。
foodsをsearchするという理解でお願いします。
記述の順番としては、
ルーティング→モデル→コントローラーが良いのかなと思っています。
routes.rb
Rails.application.routes.draw do
devise_for :users
root to: 'foods#index'
resources :foods do
collection do #ここから下3行です!!
get :search
end
end
resources :users, only: :show
end
food.rb
class Food < ApplicationRecord
belongs_to :user
has_one_attached :image
def self.search(search) #ここから7行です!!
if search != ""
Food.where("food_name LIKE(?)", "%#{search}%")
else
Food.all
end
end
#省略
end
end
foods_controller.rb
class FoodsController < ApplicationController
#省略
def search #ここから3行です!!
@foods = Food.search(params[:keyword])
end
# 省略
end
検索するためのメソッドをモデルに定義
メソッド名はsearch
とします。
MVCのお話です。
モデル
は共通した処理やデータの関係を定義する
ものです。
ビジネスロジック、つまりプログラムの処理
は、モデルに記述しましょう。
# ビューファイルにて
今回は定義方法の記事でしたが、
念の為、ビューファイルも載せます。
<%= form_with(url: search_foods_path, local: true, method: :get, class: "food-search-form") do |form| %>
<%= form.text_field :keyword, placeholder: "投稿を検索する", class: "food-search-input" %>
<%= form.submit "検索", class: "food-search-btn" %>
<% end %>
終わりに
本日、復習したところでした。
7つのアクションをよく数えてみると、
searchアクションって入ってないなと今更気づいてしまいました。。
気をつけます😇
明日もオリジナル実装に向けて頑張ります!!