在 Rails 4 的控制器操作中包含模块的未定义方法错误
Undefined method error for including a module in a controller action in Rails 4
this 问题的已接受答案末尾是这个陈述。
...in every rails app, all directories
under app/ are automatically in both autoload_paths and
eager_load_paths, meaning that adding a directory there requires no
further actions.
我在 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 中添加引用该文件的自动加载。我尝试过的任何东西都不起作用。还尝试创建一个初始值设定项。我知道我可以将它添加到我的应用程序控制器中,但它已经很大了。这是减小该控制器尺寸的第一步。
感谢您的帮助。
您没有在任何地方包含那个模块。因此错误。在您的控制器中执行此操作:
class MyController < ApplicationController
include AssembleBest
this 问题的已接受答案末尾是这个陈述。
...in every rails app, all directories under app/ are automatically in both autoload_paths and eager_load_paths, meaning that adding a directory there requires no further actions.
我在 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 中添加引用该文件的自动加载。我尝试过的任何东西都不起作用。还尝试创建一个初始值设定项。我知道我可以将它添加到我的应用程序控制器中,但它已经很大了。这是减小该控制器尺寸的第一步。
感谢您的帮助。
您没有在任何地方包含那个模块。因此错误。在您的控制器中执行此操作:
class MyController < ApplicationController
include AssembleBest