没有进入routes.rb内的'循环'(即%w()。each ...)?
我的意思是,我们想要DRY对吗?因此,您不希望在每个资源的路径文件中复制您的操作。我想你应该能够轻松地扩展默认动作/路由(索引,新建,编辑等)吗?
谢谢!
答案 0 :(得分:0)
AFIK默认无法做到这一点。您可以使用Monkey补丁资源来包含此功能:
...但我的预感是你最好再考虑是否可以用另一种方式创建这个功能,因为你要做的就是“关闭Rails”。
一个选项是创建一个CloneController #new,它接受一个模型和id并创建一个克隆。这似乎会更干燥,并且不需要你在整个地方胡椒大量的“clone_article”“clone_blog”“clone_user”路径。
显然,您需要仔细列出可以传入的模型/ ID。
答案 1 :(得分:0)
查看源代码,无法添加资源的默认操作。
但是,正如@juwiley所说,方法resources :item
只是创建member
和collection
方法的快捷方式。
你需要做的就是这样的事情
class ActionDispatch::Routing::Mapper
def resources_with_copy(*resources, &block)
block_with_copy = lambda do
block.call
member do
post :copy
end
end
resources(*resources, &block_with_copy)
end
end
然后在你的routes.rb中说
resources_with_copy :items
resources_with_copy :posts do
member do
post :share
end
end
...