【发布时间】:2014-03-26 13:37:04
【问题描述】:
我已经使用继承干掉了控制器代码。
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 控制器中抽象自定义操作?
【问题讨论】:
-
关于同一主题的另一个问题stackoverflow.com/questions/22604996/…
-
这是一个答案吗? stackoverflow.com/questions/3998286/…(tadman 的回答)
-
clone是否低于任何私有方法?尝试在def clone上方添加一行public -
不是私有的。从屏幕截图中,错误是从 AbstractController 引发的。它根本没有到达我的任何代码。
-
我遇到了同样的问题 - 我在
ApplicationController中定义了一个动作clone,但无法在ItemsController中使用它。但是如果我直接在ItemsController中定义clone,它就像你发现的那样工作。当我将它从clone重命名为copy时,它直接在ApplicationController中定义,效果很好。我从来没有找到原因 - 有一个 Rails 和 Ruby 方法clone- 不知道它是否连接。
标签: ruby-on-rails ruby-on-rails-4 controller