Railsでscafordで生成される画面とコントローラの流れ

Last-modified: Tue, 23 Sep 2014 18:01:36 JST (3504d)
Top > Railsでscafordで生成される画面とコントローラの流れ

Railsでscafordで生成される画面とコントローラの流れ

  • scafordで生成されるコントローラのアクションは以下のとおり
    • index
    • show
    • new
    • edit
    • create
    • update
    • destroy
  • プライベートメソッドとして、
    • set_hogehoge
    • hogehoge_params
      がある。
      before_action :set_hogehoge, only: [:show, :edit, :update, :destroy]
      が定義される。
  • before_actionの意味は、
    [:show, :edit, :update, :destroy]
    の各アクションが呼ばれる前に、 set_hogehogeメソッドを実行せよという意味。
    • set_hogehogeメソッドは、
         def set_hogehoge
           @hogehoge = Hogehoge.find(params[:id])
         end
      とあるので、外部からのパラメタidの値でfindしたレコードが@hogehogeに格納される。
    • @hogehogeの値は、Viewで参照される。
  • Viewには、index、new、show、editと対応するerbファイルが生成される。
  • ルーティングは以下のように設定される。
          hogehoges GET    /hogehoges(.:format)          hogehoges#index
                    POST   /hogehoges(.:format)          hogehoges#create
       new_hogehoge GET    /hogehoges/new(.:format)      hogehoges#new
      edit_hogehoge GET    /hogehoges/:id/edit(.:format) hogehoges#edit
           hogehoge GET    /hogehoges/:id(.:format)      hogehoges#show
                    PATCH  /hogehoges/:id(.:format)      hogehoges#update
                    PUT    /hogehoges/:id(.:format)      hogehoges#update
                    DELETE /hogehoges/:id(.:format)      hogehoges#destroy
  • ここで、ルーティングでGET部分だけ抜き出してみる。
              hogehoges GET    /hogehoges(.:format)          hogehoges#index
           new_hogehoge GET    /hogehoges/new(.:format)      hogehoges#new
          edit_hogehoge GET    /hogehoges/:id/edit(.:format) hogehoges#edit
               hogehoge GET    /hogehoges/:id(.:format)      hogehoges#show
  • /hogehoges
    にアクセスすると、indexアクションが呼ばれる。
  • /hogehoges/new
    にアクセスすると、newアクションが呼ばれる。
  • /hogehoges/1/edit
    にアクセスすると、id=1のパラメタをつけてeditアクションが呼ばれる。
  • /hogehoges/1
    にアクセスすると、id=1のパラメタをつけてshowアクションが呼ばれる。
  • まとめると以下の様なフローになる。
    Flowchart.png

Counter: 528, today: 2, yesterday: 0

このページの参照回数は、528です。