我可能错过了一些东西。比如说我在 app/helpers/foo_controller.rb 中有一个辅助函数,代码如下:
def sample_helper(count)
#implementaton...
end
我想在rails生成的网页中使用这个助手,代码如下:
<%= sample_helper(user.id) %>
如果我尝试运行该网页,它将向我抛出一个错误,指出该方法未定义。提前致谢!
我可能错过了一些东西。比如说我在 app/helpers/foo_controller.rb 中有一个辅助函数,代码如下:
def sample_helper(count)
#implementaton...
end
我想在rails生成的网页中使用这个助手,代码如下:
<%= sample_helper(user.id) %>
如果我尝试运行该网页,它将向我抛出一个错误,指出该方法未定义。提前致谢!
您没有完全正确的命名约定。
命名你的帮助文件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
您的助手是否应该在一个名为 app/helpers/ foo_helper.rb的文件中,其中包含一个与助手同名的模块(骆驼化),例如:
module FooHelper
def sample_helper(cont)
# implementation
end
end
这就是 Rail 自动加载助手的方式。