2017-10-16 109 views
0

在我的config/routes.rb中,我有:獲取部分路徑

resources :landings do 
    collection do 
    get 'about' 
    end 
end 

這給我下面的路線:

about_landings GET  /landings/about(.:format)  landings#about 
landings  GET  /landings(.:format)    landings#index 
       POST /landings(.:format)    landings#create 
new_landing  GET  /landings/new(.:format)   landings#new 
edit_landing GET  /landings/:id/edit(.:format) landings#edit 
landing   GET  /landings/:id(.:format)   landings#show 
       PATCH /landings/:id(.:format)   landings#update 
       PUT  /landings/:id(.:format)   landings#update 
       DELETE /landings/:id(.:format)   landings#destroy 

我只需要大約路線,以及可能的幾個其他靜態頁面路由。這是什麼routes.rb語法?

回答

1

你可以做些什麼如:

resources :landings, only: [] do 
    collection do 
    get 'about' 
    end 
end 

,這將給你:

about_landings GET /landings/about(.:format) landings#about 

就個人而言,我不喜歡about_landings爲路徑名(美學),所以我想我會做的事:

scope module: :landings do 
    get 'about' 
end 

,這將給你:

about GET /about(.:format) landings#about 

然後你可以只使用about_path這IMO是更好的(和你同時建立輸入更少的字符10,從而爲您的整個壽命增加小數秒)。此外,您還可以在瀏覽器地址欄中獲得更乾淨的(又是IMO)網址。

+0

是的,這是我正在尋找的。我同意,模塊路線是「更清潔」 – EastsideDeveloper

+0

太棒了!希望對你有效。如果您覺得合適,請隨時上傳/接受。 – jvillian

3

除/只

resources :landings, except: [:show, :new, :edit] do 
    collection do 
    get 'about' 
    end 
end 

OR

resources :landings, only: [:index] do 
    collection do 
    get 'about' 
    end 
end 

注意您可以使用:您可以跳過或只允許特定action.I剛剛給出的例子

+0

是的,這個工程。我想知道是否有語法,這將禁用所有的默認路由,而不必單獨列出它們。 – EastsideDeveloper