为什么要使用ActiveSupport :: Concern重新调整NoMethodError?

时间:2019-01-21 18:07:15

标签: ruby-on-rails activesupport-concern

我有一个小型应用程序,为了避免代码重复,我使用了ActiveSupport :: Concern,但是出了点问题,我不断收到消息:

NoMethodError in Private::MessagesController#index

undefined method `get_messages' for #<Private::MessagesController:0x00007f644687de88>

应用程序在运行

Rails version             5.2.2;
Ruby version              2.5.3-p105 (x86_64-linux);
RubyGems version          2.7.6;
Rack version              2.0.6

在:controllers / concerns / messages.rb

require 'active_support/concern'
module Messages
  extend ActiveSupport::Concern
  def get_messages(conversation_type, messages_amount)
  ....
  end
end

在controllers / private / messages_controller.rb

class Private::MessagesController < ActionController::Base
  include Messages
  def index
    get_messages('private', 10)
    ....
  end 
end

我做了很多研究,但未能解决问题。

作为替代,我将

def get_messages(conversation_type, messages_amount)

进入controllers / private / messages_controller.rb,它似乎可以工作,但是我想在另一个控制器中使用完全相同的方法,所以,如果我设法与ActiveSupport :: Concern一起使用它会更好。 >

有什么想法吗?

非常感谢您!

编辑:

我将模块“ Messages”重命名为“ Messageable”(以及相关文件),现在可以了。

0 个答案:

没有答案