LoginSignup
1
0

More than 5 years have passed since last update.

もそ、プログラミングを学ぶ【Ruby on Rails】〜resources メソッドについて〜

Last updated at Posted at 2019-04-17

ここまで「うん、まあ何となく君の言わんとすることは分かる...気がする。まあ知らんけど。」ぐらいのふわふわなイメージでRailsを学んできました。
なので先輩に教えてもらっているときに「ちなみにこの部分はわかる?説明できる?」と聞かれると、うっ...とそのまま固まることがしばしば。

今日は自戒と復習の意味を込め、まさにそんなふわふわ理解だったresourcesメソッドについて書いていきます。

resourcesメソッドとは?

resourcesメソッドは、Railsの基本となるコントローラの7つのアクションで記載した7つのアクション名に対してのルーティングを自動で生成するメソッドです。
7つのアクション、なんかドラゴン○ールっぽいですね。全然関係ないけど、プログラミングを学び始めてからは”DB”を"ドラ○ンボール"ではなく、ちゃんとデータベースって脳内で変換できるようになりました。これほんとどうでもいい情報ですね。

この基本の7つのアクションと、それに対応するHTTPメソッドについて説明して行こうと思います。
ここでは例としてTwitterを挙げて説明していきます。

indexとshow

まず、Twitterの自分のアカウントページを開いたところを想像してみてください。
自分の今までの投稿が一覧になっていますよね。
これがコントローラ/アクションで示されるindexで、要するにトップページです。

次に、どれか一つのツイートをクリックしたと想像してみてください。
選択したツイートだけが表示される詳細ページになります。
これがshowになります。

indexとshowは、「ページを出してちょうだい」というルーティングの指示に従って単純にページそのものを表示する処理を行います。
ページを表示させるためのHTTPメソッドはgetになります。
HTTPメソッドの処理のイメージはこんな感じ。

無題1141.jpeg

単純にページを表示するだけなので、コントローラがアクションを起こしてくれます。

newとcreate

次に、アカウントにログインしてツイートを新規作成する、これはnewアクションになります。
新規作成ボタンを押しただけでは、入力するための記事作成画面を単純に表示するだけですよね。
なのでHTTPメソッドはgetになります。

では作成した記事を投稿するときは?
投稿ボタンを押すと、作成画面で入力した内容をデータベースに渡す処理が発生します。
入力した情報をデータベースに渡すメソッドはpostになります。
データベースと情報をやりとりするときは、こんな感じ。

無題1140.jpeg

モデルがコントローラにデータベースから情報を渡しています。

editとupdate

さらに「ツイートを編集したいな〜」と考えたときは編集を行いますね。これがeditアクション。
こちらもnewアクション同様、ページを表示させるだけなのでHTTPメソッドはgetになります。
「ん?じゃあ次のアクションはcreateで良くない?」と一瞬考えてしまいますが、今回は既にある情報を書き換えて、その修正内容をデータベースに送るという処理が発生します。
なのでHTTPメソッドはpatchと呼ばれるものになります。

destroy

最後に「深夜に酔っ払ったノリで変なツイートあげてるやん...消そう...」と思ったとき。
迷わず削除を行いますよね。これがdestroyです。
HTTPメソッドは名前そのままdeleteになります。


こんなふうに分解して考えられるようになると、たとえばエラーが出たときに「あ、updateアクションなのにメソッドget入っちゃってるわ」みたいな感じで対応できますし、そもそもメソッドを間違えることがなくなるとのこと。
果たしてそんなふうに理解できる日が来るのか、、もその修行はまだまだ続く。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0