tawara's blog

雑記。個人の見解です。

名前付きルートの引数には変数を渡せる【25/30 2nd】

こんにちは、たわらです。

今回は、名前付きルートで変数を渡せることの確認です。

resources で名前付きルートを生成する

resources メソッドを使うと、7つの名前付きルートが自動生成されます。パスヘルパーやら URL ヘルパーとも呼ばれます。呼び方統一してほしいですね。

  resources :boards

こうすると、「〇〇_path」や「〇〇_url」ができるのですね。

この2つの違いは、生成されるパスが違います。

「〇〇_path」の場合だと、 /users/users/:id/editといったパスを生成します。

一方で、「〇〇_url」の場合だと、 http://www.hoge.com/usersなどのようにフルパスを生成します。

そういう違いがあったんですね、、、Rails はじめて2ヶ月くらいになるけどはじめて知りました、、、

名前付きルートは引数に変数を渡せる

こんなふうに名前付きルートには変数を渡すことができます。

redirect_to board_path(comment.board)

このcomment.boardの中身はこのようになってます。

 id: 62,
 title: "aaa",
 body: "aaa",
 user_id: 11,
 created_at: Tue, 26 May 2020 19:09:26 JST +09:00,
 updated_at: Tue, 26 May 2020 19:09:26 JST +09:00,
 board_image: "something.jpg"

で、実際に生成されたパスは、

[4] pry(#<CommentsController>)> board_path(comment.board)
=> "/boards/62"

となります。board 変数の id が格納されていますね。

ルーティングを確認すると、、、

 board GET    /boards/:id  boards#show

となっています。指定されたとおりのパスが変数から生まれています。

変数いれればなんとなくその変数で指定したページが表示されるんだろうな、と思っていましたが、その動作を確認できてよかったです。

最後に

復習っていいですね。 読んでくださった、ありがとうございます。

参考文献

Rails ガイド

Rails のルーティングを極める(前編)

Rails のルーティングを極める (後編)