如何通过Rails 3中的“helper”方法使用自定义助手?

时间:2011-06-02 09:46:54

标签: 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

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

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

我错过了什么?

3 个答案:

答案 0 :(得分:3)

一般来说,我的反面是:我使用控制器方法作为助手。

class MyController < ApplicationController
  helper_method :my_helper

  private 
  def my_helper
    "text"
  end
end

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

如何将帮助器作为mixin包含在控制器中......

class MyController < ApplicationController
  include MyHelper

  def index
    puts foo
  end
end