如何在Rails 3中通过“helper”方法使用自定义辅助器?

3
我将尝试创建一个自定义帮助程序,如下所示:

# app/controllers/my_controller.rb
class MyController < ApplicationController
  helper :my
  def index
    puts foo
  end
end

# app/helpers/my_helper.rb
module MyHelper
  def foo
    "Hello"
  end
end

但是,我遇到了以下错误:

undefined local variable or method `foo' for #<MyController:0x20e01d0>

我错过了什么?
3个回答

3

通常情况下,我会做相反的事情:我将控制器方法用作辅助函数。

class MyController < ApplicationController
  helper_method :my_helper

  private 
  def my_helper
    "text"
  end
end

我没有意识到你可以这样做...虽然在某些方面,现在我希望我不知道 :P(它有巨大的滥用潜力)。 - d11wtq
啊哈 :) 伴随着强大的能力而来的是巨大的责任 ;) - apneadiving

1

Helpers从视图中访问,而不是控制器。因此,如果您尝试将以下内容放入索引模板中,它应该可以工作:

#my/index.html.erb
<%= foo %>

如果您确实想要从控制器中访问某些内容,那么您应该使用 include 语法而不是 helper,但在这种情况下不要将其命名为帮助程序模块。

0

把助手作为混入(mixin)包含在控制器中怎么样?

class MyController < ApplicationController
  include MyHelper

  def index
    puts foo
  end
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接