我已经使用继承方法将控制器代码DRY了。
class MastersController < ApplicationController
def index
...
...
end
...
...
end
class ItemsController < MastersController
end
现在,我向MastersController添加了自定义操作
class MastersController < ApplicationController
def index
...
...
end
...
...
def clone
...
...
end
end
我已添加商品的路线
resources :items do
get :clone
end
现在,当我尝试访问myapp.dev/items/1/clone时,出现错误
AbstractController::ActionNotFound at /items/1/clone
The action 'clone' could not be found for ItemsController
如果我在ItemsController中添加“克隆”操作,该错误就会消失。
class ItemsController < MastersController
def clone
...
...
end
end
如何在Rails Controller中抽象自定义操作?
不能clone
用作从父控制器继承的动作。ApplicationController
除了您的,这是真的MastersController
。
将您的操作重命名为copy
,便可以在其中进行定义并将其MastersController
正确路由到ItemsController#copy
。
请注意,我不能告诉你为什么。clone
在Object
类上定义了一个Ruby方法。我怀疑这是原因-也许有更多知识的人可以解释。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句