在我的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
我只需要about路由,可能还有其他一些静态页面路由。那个routes.rb的语法是什么?
答案 0 :(得分:3)
您可以使用except / only
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
注意:您可以跳过或仅允许特定操作。我只是举例
答案 1 :(得分: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
然后你可以使用IMO更好的about_path
(并且在构建routes.rb
时键入更少的字符,从而在整个生命周期中添加小数秒)。此外,您在浏览器地址栏中获得了一个更清洁(再次,IMO)的URL。