tkymtk's blog

Ruby on Rails及びその周辺について調べたこと。Do whatever you want to do at your own pace.

Rails アプリ動作のバックグラウンド(基礎編)2

前回までに見たこと

基礎編1では、scaffoldでUsersリソースを作成して、indexページにアクセスするところまで見ました。

http://localhost:3000/users

Listing users

Name Email
New User

今回はindexページから先をみて行きたいと思います。

/users/new と newアクション

indexページの New Userをクリックしたときに何が起こるのでしょうか。

views/users/index.html.erbを開くと、一番下に

<%= link_to 'New User', new_user_path %>

という一文があります。これが New Userというリンクを表示しています。 ためしに

<%= link_to '新規ユーザー', new_user_path %>

とし、ページをリロードすると、リンクが New Userから新規ユーザー に変わっていることが確認できます。
そして、このnew_user_path というところが、リンクのリンク先を指定しているところに成ります。 基礎編1のroutesの表を見てみましょう。

Prefix Verb URI Pattern Controller#Action
new_user GET /users/new(.:format) users#new

このPrefixという列にあるものがリンク先を示す際の接頭辞となります。 この列に指定された接頭辞に、_pathをつけたものが対応するURLとなります。 これはRailsが自動でやってくれていることです。
この場合、new_userがPrefixなので、new_user_pathとすることで、URLとして /users/newを指定することになります。
もう一つ、link_to ()メソッドはデフォルトのHTTPメソッドがGET となっています。 なので、

<%= link_to 'New User', new_user_path %>

で作られたリンクをクリックすると、GET /users/new というリクエストをRailsに送るということになるわけです。

Railsはこの新たなリクエストを受けると、/usersページのときと同様に、 定義されたroutingによって処理されるべきコントローラアクションにリクエストを送ります。
ここでは、上のroutesの表で確認すると、 UsersControllernewアクションで処理されることになっています。

間違いがあれば、ご指摘下さると幸いです。