在使用resources方法之前,我們先來利用最簡單的方式來做路徑
Rails的路徑管理都會在config/routes.rb這個檔案裡
先在routes.rb來製作一條簡單的路徑
Rails.application.routes.draw do
get '/welcome', to: 'welcome#index'
end
存檔之後可以用$ rails routes
檢視目前所有的路徑,或者是從路徑對照表裡面看到我們剛製作的路徑
$ rails routes
Prefix Verb URI Pattern Controller#Action
welcome GET /welcome(.:format) welcome#index
...(略)
這時候啟動sever就會出現這樣得錯誤訊息畫面,但是別緊張~這樣的畫面是正常得!如果Routing Error錯誤訊息是出現:No route matche...可能就要注意一下是否有問題
接下來快速的welcome做一個Controller給他 $rails g controller Welcome
$ rails g controller Welcome
Running via Spring preloader in process 43234
create app/controllers/welcome_controller.rb
invoke erb
...(略)
並且在剛所建立的controller檔案app/controllers/welcome_controller.rb裡寫上
class WelcomeController < ApplicationController
def index
render html: 'welcome'
end
end
就可以在網站上成功顯示welcome字樣了!
以上這就是最簡單製作route的方式。
可是這樣每次都要一條一條做,那當你網站不再單純只有首頁
也許你可以直接考慮使用resourses
符合RESTful(Representational State Transfer)的網址設計,就是使用使用Rails提供的 resources方法。
Rails.application.routes.draw do
resources :cats
end
利用resources方法所做的路徑,從路徑對照表來看,會發現它幫忙產生「八條路徑,七個方法」,不只首頁的頁面,就連新增修改刪除等等都幫我們建立完成了!都這麼方便了,還要一條一條建立嗎?
$ rails routes
Prefix Verb URI Pattern Controller#Action
welcomes GET /cats(.:format) cats#index
POST /cats(.:format) cats#create
new_welcome GET /cats/new(.:format) cats#new
edit_welcome GET /cats/:id/edit(.:format) cats#edit
welcome GET /cats/:id(.:format) cats#show
PATCH /cats/:id(.:format) cats#update
PUT /cats/:id(.:format) cats#update
DELETE /cats/:id(.:format) cats#destroy
不過在這裡要注意,當複數得resources寫成單數resource
只會出現「七條路徑,六個方法」,而且跟複數resources比較之下,會發現除了每有index的路徑,它也沒有:id
這個方法。
$ rails routes
Prefix Verb URI Pattern Controller#Action
new_welcome GET /cats/new(.:format) cats#new
edit_welcome GET /cats/edit(.:format) cats#edit
welcome GET /cats(.:format) cats#show
PATCH /cats(.:format) cats#update
PUT /cats(.:format) cats#update
DELETE /cats(.:format) cats#destroy
POST /cats(.:format) cats#create
當然resources也不是每次都一次建立那麼多路徑,可以用only
選擇你要的,或者是 except
你不要的來做變化,看以下範例:
only只要...的路徑
Rails.application.routes.draw do
resources :cats, only:[ :index, :new ]
end
# 路徑對照表只會顯示index,new的路徑
Prefix Verb URI Pattern Controller#Action
cats GET /cats(.:format) cats#index
new_cat GET /cats/new(.:format) cats#new
except除了...以外的路徑
Rails.application.routes.draw do
resources :dog, except:[ :index, :create, :update ]
end
# 路徑對照表只會顯示,除了index,create,update以外的路徑
Prefix Verb URI Pattern Controller#Action
new_dog GET /dog/new(.:format) dog#new
edit_dog GET /dog/:id/edit(.:format) dog#edit
dog GET /dog/:id(.:format) dog#show
DELETE /dog/:id(.:format) dog#destroy
什麼時候要使用only或是except?其實only或是except這樣得方法,其實使用方式就完全看你怎麼規劃網站的內容來決定了。(這段根本廢話無誤呀