Labyrinth of Wisdom

-This is My Archive-


ルーティングの基本

Railsにおいてルーティングは非常に大事かつ、ややこしくて混乱しやすいと思うので、理解できた範囲をまとめていきます。(実際筆者は大分混乱しました)

root画面の変更

アプリケーション作成直後、URLにlocalhost:3000と打つと写真の様にRailsのWelcome画面が出ますが、Welcome画面以外を表示したいときの記述。
これでコントローラーに記述されたアクションに紐付いたViewが呼び出されるようになります。

f:id:Labyrinth_of_Wisdom:20160210093158p:plain

# /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/newlocalhost:/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"