Rails:Controller无法根据帮助文件

时间:2016-08-31 22:26:06

标签: ruby-on-rails ruby

Controllers
 -concerns
   -application_controller.rb
   -display_controller.rb

Helpers
 -application_helper.rb
 -display_controller.rb

在display_helper.rb

   module DisplayHelper
        def is_c
          a + b
        end
    end

在display_controller.rb

class DisplayController < ApplicationController
    include ApplicationHelper
    include DisplayHelper

    def update
      @c = is_c
    end

end

问题是如果我想在更新操作中使用@c = is_c,我必须在Controller中执行include DisplayHelper,否则无法将is_c的结果分配给@c。通常,辅助文件中的方法可以在accroding控制器中使用而不包括,但对于此资源,为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

如果您正在使用这样的模块,则必须在实例上调用is_c。这意味着您必须在与该实例关联的类中包含DisplayHelper。

如果您不想在实例上调用它,那么您可以在SELF上定义is_c:

试试这个:

 module DisplayHelper
        def self.is_c
          a + b
        end
end

在控制器中:

DisplayHelper.is_c

如果您不理解评论,我会尝试解释。我希望所有这些都是有道理的。