如何在辅助模块中定义的模型类中使用方法

tim*_*one 3 ruby-on-rails ruby-on-rails-3.2

我只是想尝试访问simple_format帮助器

class Note < ActiveRecord::Base
  include SimpleHelper

 def body_symbols_output_html
    arc_simple_format(body_symbols_output)
  end
Run Code Online (Sandbox Code Playgroud)

并在lib/simple_helper.rb中

module SimpleHelper
  def arc_simple_format txt
    simple_format txt
  end
end
Run Code Online (Sandbox Code Playgroud)

得到

NoMethodError (undefined method `simple_format' for #<Note:0x007f7fbb913088>):
  lib/simple_helper.rb:4:in `arc_simple_format'
Run Code Online (Sandbox Code Playgroud)

我如何访问simple_format?我知道访问视图级别的助手是一个坏主意,但这只是一个api

谢谢

apn*_*ing 6

您应该只包括适当的模块:

include ActionView::Helpers::TextHelper
Run Code Online (Sandbox Code Playgroud)

我建议的是避免使用所有这些方法破坏你的课程,这样你就可以在你的班级中创建一个Helper类:

class Note
  delegate :simple_format, to: :helper

  def helper
    Helper.instance
  end

  private

  class Helper
    include Singleton
    include ::ActionView::Helpers::NumberHelper
  end
end
Run Code Online (Sandbox Code Playgroud)