api资源rails路由

时间:2017-01-03 15:20:49

标签: ruby-on-rails ruby-on-rails-4

所以我的应用程序中有一些API资源,以及一些常规资源,以及我使用的常规资源:

resources :books

然后我可以通过except: %i(destroy new edit)only这样效果很棒!但是对于我的资源,我永远不会有新的/编辑操作,有时我也需要传递exceptonly选项。

我在想创造类似的东西:

api_resources:books

默认情况下没有新的/编辑操作,我该怎么做?

2 个答案:

答案 0 :(得分:3)

也许是这样的?

# config/routes.rb
Rails.application.routes.draw do
  def api_resources(res)
    resources res, only: [:new, :edit]
  end

  api_resources :a
  api_resources :b
end

# output
Prefix Verb URI Pattern           Controller#Action
 new_a GET  /a/new(.:format)      a#new
edit_a GET  /a/:id/edit(.:format) a#edit
 new_b GET  /b/new(.:format)      b#new
edit_b GET  /b/:id/edit(.:format) b#edit

答案 1 :(得分:0)

@Amree的答案无法处理嵌套资源。一个改进是:

# config/routes.rb
Rails.application.routes.draw do
  def editable_resoustrong textrces(res, &block)
    resources res, only: %i[new edit], &block
  end

  editable_resources :a
end

# output
Prefix Verb URI Pattern           Controller#Action
 new_a GET  /a/new(.:format)      a#new
edit_a GET  /a/:id/edit(.:format) a#edit