やったこと
Rails で member ルーティングを使ってみます。
以下は Rails ガイドからの引用です。
デフォルトで作成されるRESTfulなルーティングは7つですが、7つでなければならないということはありません。必要であれば、コレクションやコレクションの各メンバーに対して適用されるリソースを追加することもできます。
確認環境
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
$ rails --version
Rails 5.2.3
調査
コード追加
config/routes.rb
Rails.application.routes.draw do
resources :hello do
get 'index', action: :index
get '(/:id)/show2', action: :show2
get 'show3', on: :member
end
end
app/controllers/hello_controller.rb
class HelloController < ApplicationController
def index
end
def show2
render :json => {ver: 2, id: params[:hello_id]}
end
def show3
render :json => {ver: 3, id: params[:id]}
end
end
結果を確認する
ルーティングを確認してみる
$ rails routes | grep -E "/hello" | grep "show."
GET /hello/:hello_id(/:id)/show2(.:format) hello#show2
show3_hello GET /hello/:id/show3(.:format) hello#show3
パラメータの取得方法が変わっています。
member ルーティングでは id となっています。
下記の URL にアクセスすると、パラメータが取得できていることが確認できます。
http://localhost:3000/hello/1000/show2
http://localhost:3000/hello/1000/show3