ApplicationController的未定义方法`caches_action':Class

时间:2013-04-07 13:33:43

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-2.0

我正在尝试升级到rails 4 beta 1,但我有点问题。

简而言之,这就是我的应用程序控制器的样子。

class ApplicationController < ApplicationController
  caches_action :method
end

caches_action在Rails 4中移出了它自己的gem,所以包括gem应该解决问题。

gem "actionpack-action_caching", github: "rails/actionpack-action_caching"

但是当我运行我的请求规范或在浏览器中访问该应用程序时,我收到此错误。

app/controllers/application_controller.rb:3:in `<class:ApplicationController>': undefined method `caches_action' for ApplicationController:Class (NoMethodError)

为什么?

  • Rails 4.0.0.beta1
  • Ruby 2.0.0
  • Rspec 2.13.1

3 个答案:

答案 0 :(得分:11)

由于缓存不再是核心的一部分,因此您需要在您使用它的每个文件的顶部明确要求它:

require 'actionpack/action_caching'

答案 1 :(得分:2)

问题出在Rails 4中,他们将缓存部分提取到单独的宝石中

如果您收到操作缓存错误,则需要添加以下gem

gem 'actionpack-action_caching'
页面缓存的

必须添加

gem 'actionpack-page_caching'

我也玩过,然后我发现,没有添加宝石来做同样的事情。

希望这会奏效。谢谢。

答案 2 :(得分:0)

我使用 Rails 作为 API rails new AppName --api 我通过添加使其工作

include ActionController::Caching

class ApplicationController < ActionController::API