所以我要做的是将format_text
方法委托给类级方法,这样我就不会有两个同名的方法。有这么好的模式或方式吗?这样做的原因是我可以在视图和演示者中调用format_text
。我意识到在视图之外使用ApplicationHelper可能不是一个好习惯。
application_helper.rb
module ApplicationHelper
# would like to do something like this:
# delegate :format_text, to: self.format_text
# all this method does is call self.format_text
def format_text(text)
# calls the class level method
format_text(text)
end
# need the self. in front to use outside of view
def self.format_text(text)
# do something to the text and return a string
end
end
视图使用帮助程序:
some_view.html.haml
%label= format_text('something needs formatting')
但在某些情况下,格式化需要在演示者级别下降。在这种情况下,要使用format_text
方法,必须将其称为ApplicationHelper.format_text
。
some_presenter.rb
def header_of_some_data
"#{@name} blah #{ApplicationHelper.format_text('some text')}"
end
答案 0 :(得分:0)
您可以使用module_function:
module ApplicationHelper
def format_text(text)
# do something to the text and return a string
end
module_function :format_text
end
ApplicationHelper.format_text("text")