iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 5
0

RoR的最後一篇,Rails的Routing!不過順序很像錯了,應該先講Routing再講Controller....
將錯就錯ing...

Controller跟Routing兩個到還是會滿有關聯的,開Routing導request到controller,所以我才挑這兩個出來講。

為什麼Model不講?

因為我暫時沒考慮之後的React會用到太深的功能

為什麼View不講?

阿....因為用React做掉了!!頂多...就是用到jbuilder回傳JSON吧

我也很掙扎,我不知道有沒有這麼多好講,哈哈哈哈。

不管啦,開始Routing!再強調一次,今天講的是Rails的Routing,不是React-router,它之後會被我講到(又多一個R?)。

Routing

很快的,看到itHelpRRRR底下的config資料夾,恩!裡面有個routes.rb,他就是寫著滿滿的Request來了要去哪裡的檔案。
http://ithelp.ithome.com.tw/upload/images/20161220/20103835cNA3XRC998.png

什麼?滿滿?怎麼只有一行?Controller裡卻塞了75行??
這一行可厲害了,厲害在哪?我們用Command跑一個指令看看!

rails routes 可以把Routes.rb的路由列印出來,幫助你確認網址有沒有對應到對的Controller與Action

$ rails routes
     Prefix Verb   URI Pattern                Controller#Action
     people GET    /people(.:format)          people#index
            POST   /people(.:format)          people#create
 new_person GET    /people/new(.:format)      people#new
edit_person GET    /people/:id/edit(.:format) people#edit
     person GET    /people/:id(.:format)      people#show
            PATCH  /people/:id(.:format)      people#update
            PUT    /people/:id(.:format)      people#update
            DELETE /people/:id(.:format)      people#destroy

厲害吧,一行可以換出這麼多行?因為這些太常用了,所以直接整合進resources :people裡

看到最後面一欄了嗎?Controller#Action是不是都在Controller裡看過了呢?再看到URI Pattern這欄,是不是跟你打在網址列上的東西很像?他只是把localhost:3000去掉而已!至於為什麼會有一樣的,這就要看到Verb動詞這欄了,網址列過來的都是GET動詞,要發出其他種類的動詞,就要搭配Form tag裡的Method屬性,或也可以依靠一些工具測試。

一次看這麼多無字天書,是不是很霧煞煞?
一切的起源都是restful(Representational state transfer),透過請求方法(Http verb)跟URI,把Request有效的分配到他該去的action,又因為這些太常用,所以RoR的精神之一DRY(Don't repeat yourself)用resources大大的簡化它。

更多資源可以看下面連結:
Rails路由

OK,好,今天結束。
明天開始就要準備踏進React的世界了,做好準備吧!


今天順便push上了github,每天每天都會有新的commit上去!!


上一篇
Day 4, Controller的CRUD
下一篇
Day 6, 先寫下接下來的目錄!
系列文
RRRR的世界 (Ruby on Rails + React + Redux)30

尚未有邦友留言

立即登入留言