3

我可能错过了一些东西。比如说我在 app/helpers/foo_controller.rb 中有一个辅助函数,代码如下:

def sample_helper(count)
    #implementaton...
end

我想在rails生成的网页中使用这个助手,代码如下:

    <%= sample_helper(user.id) %>

如果我尝试运行该网页,它将向我抛出一个错误,指出该方法未定义。提前致谢!

4

2 回答 2

4

您没有完全正确的命名约定。

命名你的帮助文件app/helpers/foo_helper.rb,在其中你应该有这个:

module FooHelper
  def sample_helper(count)
    "#{count} items" # or whatever
  end
end

现在,从您呈现的任何视图中FooController都应该能够使用该sample_helper方法。


另外,你应该知道,如果你使用 rails 生成器,这个结构是为你设置的。您需要做的就是将方法添加到生成的文件中。这样您就无需猜测命名约定。

例如,此命令将创建一个控制器文件、控制器测试文件、一个帮助文件和一个索引视图文件,所有这些都可以供您自定义。

rails g controller foo index
于 2013-05-27T21:18:14.547 回答
0

您的助手是否应该在一个名为 app/helpers/ foo_helper.rb的文件中,其中包含一个与助手同名的模块(骆驼化),例如:

module FooHelper 
  def sample_helper(cont)
    # implementation
  end
end

这就是 Rail 自动加载助手的方式。

于 2013-05-27T21:18:07.030 回答