获得部分路线

时间:2017-10-16 17:41:08

标签: ruby-on-rails

在我的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的语法是什么?

2 个答案:

答案 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。