読者です 読者をやめる 読者になる 読者になる

【Rails】createアクションが呼ばれるタイミングっていつなん...

以前の記事で、dotinstallを勉強してる途中にでてきた疑問点の考察。

ルーティングをみてみると、

▶ rake routes
      Prefix Verb   URI Pattern                  Controller#Action
    projects GET    /projects(.:format)          projects#index
             POST   /projects(.:format)          projects#create
 new_project GET    /projects/new(.:format)      projects#new
edit_project GET    /projects/:id/edit(.:format) projects#edit
     project GET    /projects/:id(.:format)      projects#show
             PATCH  /projects/:id(.:format)      projects#update
             PUT    /projects/:id(.:format)      projects#update
             DELETE /projects/:id(.:format)      projects#destroy
        root GET    /                            projects#index

この図でいうと、POSTになってるのはcreateアクションだ。ということはcreateが新しいデータを保存する役割。

newアクションっていうのはフォームでユーザに値を入力させて、postでcreateアクションに値を渡すためのものみたいだ。

createアクションを読んだりする処理とかは特別には書いてないと思うんだけど、どういうロジックとタイミングで呼ばれるんだろう。

該当するcontrollerのnewアクション(projects#new)に対応するviewからpostでsubmitされたら自動的にcreateが呼ばれるのかな?

RailsでのPOSTとかGETの扱いが未だによくわからん。。。

ググってみると

ここでは冒頭で紹介した7つのアクションのうち、フォームを表示するための「new」と、フォームから投稿されたデータを登録する「create」を用意します。

ただし、ビューを用意するのはnewアクションだけです。createアクションは実行後、データの登録が成功したらindexアクションにリダイレクトし、失敗したらnewアクションのビューを再レンダリングするようにします。

http://www.atmarkit.co.jp/ait/articles/1403/28/news035_3.html

とある。うん、PHPベタだとnew.htmlファイルとcreate.phpを分けて作るのに似てる。そしてcreate.phpからindex.htmlにリダイレクトする的な。それが、Railsでは名前に応じて自動的に行われていると。

そんな感じで理解しておけば支障ないかな...