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控制器中使用而不包括,但对于此资源,为什么它不起作用?
答案 0 :(得分:0)
如果您正在使用这样的模块,则必须在实例上调用is_c。这意味着您必须在与该实例关联的类中包含DisplayHelper。
如果您不想在实例上调用它,那么您可以在SELF上定义is_c:
试试这个:
module DisplayHelper
def self.is_c
a + b
end
end
在控制器中:
DisplayHelper.is_c
如果您不理解评论,我会尝试解释。我希望所有这些都是有道理的。