【问题标题】:Undefined method error for including a module in a controller action in Rails 4在 Rails 4 的控制器操作中包含模块的未定义方法错误
【发布时间】:2017-06-24 19:36:36
【问题描述】:

在接受this 问题的答案的末尾是此声明。

...在每个 Rails 应用程序中,所有目录 在 app/ 下自动在 autoload_paths 和 eager_load_paths,这意味着在那里添加目录不需要 进一步的行动。

我在app 文件夹中添加了一个autoload 文件夹。在其中我有一个名为 assemble_best.rb 的文件,其中包含以下内容来测试它:

# app/autoload/assemble_best.rb
module AssembleBest
  def best_assembly(user_id,incl_confirms)
    p "****"
    p 'yo! it worked!'
  end
end

在我的控制器中,我有:

best_assembly(current_user.id, true)

我得到的错误是:

undefined method `best_assembly'

在各种语法中,我尝试添加 before_action 和 require 语句。我还尝试将文件夹放在 lib 文件夹中,并在我的 application.rb 中添加引用该文件的自动加载。我试过的都没有用。还尝试创建一个初始化程序。我知道我可以将它添加到我的应用程序控制器中,但它已经很大了。这是减小控制器大小的第一步。

感谢您的帮助。

【问题讨论】:

  • 为什么投反对票?如果您对某个问题投了反对票,您真的应该说明您的理由,以便改进问题。

标签: ruby-on-rails ruby-on-rails-4 autoload eager-loading


【解决方案1】:

您没有在任何地方包含该模块。因此错误。在您的控制器中执行此操作:

class MyController < ApplicationController
  include AssembleBest

【讨论】:

  • @Jay,这个问题与什么环境有关?这需要重新启动服务器吗?
  • @vee,重新开始开发。是的,直到重启后才起作用。
猜你喜欢
  • 2017-12-01
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 2011-06-16
相关资源
最近更新 更多