所以我的应用程序中有一些API资源,以及一些常规资源,以及我使用的常规资源:
resources :books
然后我可以通过except: %i(destroy new edit)
或only
这样效果很棒!但是对于我的资源,我永远不会有新的/编辑操作,有时我也需要传递except
和only
选项。
我在想创造类似的东西:
api_resources:books
默认情况下没有新的/编辑操作,我该怎么做?
答案 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