ルーティングの基本
Railsにおいてルーティングは非常に大事かつ、ややこしくて混乱しやすいと思うので、理解できた範囲をまとめていきます。(実際筆者は大分混乱しました)
root画面の変更
アプリケーション作成直後、URLにlocalhost:3000
と打つと写真の様にRailsのWelcome画面が出ますが、Welcome画面以外を表示したいときの記述。
これでコントローラーに記述されたアクションに紐付いたViewが呼び出されるようになります。
# /config/routes.rb root "コントローラー名#アクション名" #例 #topコントローラーのindexアクションに紐づくView、/top/index.html.erb が呼び出される root "top#index"
リソースベースのルーティング - CRUD操作の追加
1つのコントローラーに対してCRUD操作のアクションを自動的に紐づけてくれる記述。(index
/show
/new
/create
/edit
/update
/destroy
が設定されます。便利!)
# /config/routes.rb resources :コントローラー名 #CRUDの中の一部のアクションのみ使いたい場合は、限定した書き方もできる resources :コントローラー名, only: [:アクション名, :アクション名] #例 resources :books #usersコントローラーのnewとdestroyアクションのみ使える resources :users, only: [:new, :destroy]
リソースに任意のアクション追加
リソースベースのルーティングで任意のアクションを追加する記述。(search
など)
# /config/routes.rb resources :コントローラー名 do #collectionメソッドのブロック内のアクションは複数のデータを扱う collection {HTTPメソッド名 "アクション名"} #コントローラー名(単数)メソッドのブロック内のアクションは単数のデータを扱う コントローラー名(単数) {HTTPメソッド名 "アクション名"} end #例 resources :books do collection {get "search"} #本の検索 book {patch "suspend","restore"} #本の公開停止・再開 end
URLをカスタマイズする方法
任意の名称でURLをカスタマイズする記述。(localhost:3000/users/new
をlocalhost:/signup
というURLに変更したい時など)
# /config/routes.rb match "任意のパス", to: "コントローラー名#アクション名", via: "HTTPメソッド名" #例 resources :users #localhost:3000/signupにアクセスすると、usersコントローラーのnewアクションをHTTPメソッドのgetで呼び出す match "/signup", to: "users#new", via: "get"