0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails]searchアクションの定義方法について

Posted at

はじめに

本記事では、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アクションって入ってないなと今更気づいてしまいました。。
気をつけます😇

明日もオリジナル実装に向けて頑張ります!!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?