Geo*_*ath 6 controller ruby-on-rails ruby-on-rails-4
我使用继承来干掉控制器代码.
class MastersController < ApplicationController
def index
...
...
end
...
...
end
class ItemsController < MastersController
end
Run Code Online (Sandbox Code Playgroud)
现在我已经向MastersController添加了一个自定义动作
class MastersController < ApplicationController
def index
...
...
end
...
...
def clone
...
...
end
end
Run Code Online (Sandbox Code Playgroud)
我添加了项目的路线
resources :items do
get :clone
end
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试访问myapp.dev/items/1/clone时,我收到错误
AbstractController::ActionNotFound at /items/1/clone
The action 'clone' could not be found for ItemsController
Run Code Online (Sandbox Code Playgroud)
如果我在ItemsController中添加'clone'动作,则错误消失.
class ItemsController < MastersController
def clone
...
...
end
end
Run Code Online (Sandbox Code Playgroud)
如何在Rails控制器中抽象自定义操作?
小智 0
无法用作clone
从父控制器继承的操作。ApplicationController
除了您的之外,情况也是如此MastersController
。
将您的操作重命名为copy
,您将能够在 中定义它MastersController
并正确路由到ItemsController#copy
.
请注意,我无法告诉你这是为什么。clone
该类中定义了一个 Ruby 方法Object
。我怀疑这就是原因 - 也许有更多知识的人可以解释。
归档时间: |
|
查看次数: |
1959 次 |
最近记录: |