LoginSignup
2
3

More than 1 year has passed since last update.

[Rails] 自作のアクションのルーティング設定(memberとcollection)

Posted at

はじめに

検索機能の実装過程で新しい気づきがあったので記事に残しておきます。
よろしくお願いします。

自作のアクション

ここではRailsの7つのアクションとされるもの以外に、自分で作ったアクションのことを「自作のアクション」と呼んでいます。

今回検索機能を実装するにあたって、新たにコントローラーに「search」アクションというものを作成しました。

  def search
    @tweets = Tweet.search(params[:keyword])
  end

コントローラーの中にこんな感じで記述しました。
モデルの方でこの中で使われているsearchメソッドは定義されていますが、今回は特に説明はしません。

memberとcollection

memberとcollectionはルーティングを設定するときに使用できる、URLや実行されるコントローラーを任意にカスタムできるものです。

例えばmemberを使ってルーティングを設定すると下記のようになります。

Rails.application.routes.draw do
  resources :tweets do
    member do
      get 'search'
    end
  end
end

rails routesすると↓

Prefix           Verb    URI                                 Pattern
search_tweet      GET    /tweets/:id/search(.:format)       tweets#search

collectionを使用すると下記のようになります。

Rails.application.routes.draw do
  resources :tweets do
    collection do
      get 'search'
    end
  end
end

rails routesでルーティング確認すると↓

Prefix           Verb    URI                                 Pattern
search_tweets    GET    /tweets/search(.:format)              tweets#search

この二つの違いは、URLの指定先に:idが含まれているか否かになります。
memberは:idあり。
collectionは:idなし。

終わりに

実装途中にこれ大事だ!と思い取り急ぎ記事にしました。
実際に実装した検索機能の手順は追って記事にしたいと思います。

2
3
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
2
3