我如何以编程方式确定哪些方法已被声明为“帮助程序”? Rails 中控制器的方法?

发布于 2024-08-03 20:11:31 字数 725 浏览 8 评论 0原文

我正在编写一个插件,向控制器添加一个方法并将其声明为辅助方法。如果它是静态完成的(而不是通过插件),它会看起来像这样:

# in RAILS_ROOT/app/controllers/stuffed_animals_controller.rb
class StuffedAnimalsController < ActionController::Base

  private

  def bear
    'Teddy Bear'
  end

  helper_method :bear

end

# in RAILS_ROOT/app/views/stuffed_animals/index.html.erb:
<%= bear -%>

它工作得很好。不过,我想测试 :some_helper_method 实际上 是一个辅助方法。我尝试了这个:

def test_declared_bear_as_helper_method
  assert StuffedAnimalsController.helper_methods.include?(:bear)
end

不幸的是, ActionController::Base 没有 :helper_methods 类方法。有人知道我在哪里可以通过 :helper_method 获取类公开的内容列表吗?

I'm writing a plugin that adds a method to controllers and declares it as a helper method. If it were done statically (rather than through the plugin), it would look something like this:

# in RAILS_ROOT/app/controllers/stuffed_animals_controller.rb
class StuffedAnimalsController < ActionController::Base

  private

  def bear
    'Teddy Bear'
  end

  helper_method :bear

end

# in RAILS_ROOT/app/views/stuffed_animals/index.html.erb:
<%= bear -%>

It works just fine. I want to test that :some_helper_method is actually a helper method, though. I tried this:

def test_declared_bear_as_helper_method
  assert StuffedAnimalsController.helper_methods.include?(:bear)
end

Unfortunately, ActionController::Base does not have a :helper_methods class method. Anyone know where I can get the list of things a class exposes via :helper_method?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空袭的梦i 2024-08-10 20:11:31

知道了!

def test_declared_bear_as_helper_method
  helper = Object.new
  helper.extend StuffedAnimalsController.master_helper_module
  assert helper.respond_to?(:bear)
end

Got it!

def test_declared_bear_as_helper_method
  helper = Object.new
  helper.extend StuffedAnimalsController.master_helper_module
  assert helper.respond_to?(:bear)
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文