【问题标题】:undefined method `caches_action' for ApplicationController:ClassApplicationController:Class 的未定义方法“caches_action”
【发布时间】:2013-04-07 13:33:42
【问题描述】:

我正在尝试升级到 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

【问题讨论】:

  • 只是出于好奇,您在使用caches_action之前是否require 'actionpack-action_caching'
  • 我刚试过gem 'actionpack-action_caching', github: 'rails/actionpack-action_caching', require: "actionpack-action_caching",结果是cannot load such file -- actionpack-action_caching (LoadError)
  • 哎呀,对不起。我看了一下代码,你需要 require actionpack/action_caching 而不是 require 'actionpack-action_caching' (斜线而不是减号。)由于缓存不再是核心的一部分,你需要在每个文件的顶部显式地 require 它你用它。
  • require "actionpack/action_caching" 添加到application.rb 有效。把它写成下面的答案,我会接受的。谢谢。
  • 我遇到了这个问题,建议的解决方案没有解决它。有人吗?

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


【解决方案1】:

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

require 'actionpack/action_caching'

【讨论】:

【解决方案2】:

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

如果你在动作缓存中遇到错误,那么你需要在 gem 下面添加

gem 'actionpack-action_caching'

对于页面缓存必须添加

gem 'actionpack-page_caching'

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

希望这会奏效。谢谢。

【讨论】:

    【解决方案3】:

    我使用 Rails 作为 API rails new AppName --api 我通过添加得到它的工作

    include ActionController::Caching
    

    class ApplicationController &lt; ActionController::API

    【讨论】:

      猜你喜欢
      • 2016-06-16
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 2013-06-11
      • 2010-12-30
      • 2019-12-25
      相关资源
      最近更新 更多