Ruby on rails 如何通过";“助手”;Rails3中的方法?

Ruby on rails 如何通过";“助手”;Rails3中的方法?,ruby-on-rails,ruby-on-rails-3,helper,Ruby On Rails,Ruby On Rails 3,Helper,我正在尝试创建如下自定义帮助器: # 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 #app/controllers/my_control

我正在尝试创建如下自定义帮助器:

# 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
#app/controllers/my_controller.rb
类MyController
但是,我得到了以下错误:

undefined local variable or method `foo' for #<MyController:0x20e01d0>
未定义的局部变量或方法“foo”#

我缺少什么?

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

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

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

通常,我会做相反的操作:我使用控制器方法作为帮助器

class MyController < ApplicationController
  helper_method :my_helper

  private 
  def my_helper
    "text"
  end
end
class MyController
在控制器中只包含helper作为mixin如何

class MyController < ApplicationController
  include MyHelper

  def index
    puts foo
  end
end
class MyController
我不知道你可以这么做。。。虽然在某些方面我希望我现在不知道:P(它有很大的潜力被过度使用)啊哈:)强大的力量带来巨大的责任;)