【问题标题】:Ruby on Rails - using helpers in html.erbRuby on Rails - 在 html.erb 中使用帮助程序
【发布时间】:2013-05-22 17:54:29
【问题描述】:
我可能遗漏了一些东西。
比如说我在 app/helpers/foo_controller.rb 中有一个辅助函数,代码如下:
def sample_helper(count)
#implementaton...
end
我想在rails生成的网页中使用这个助手,代码如下:
<%= sample_helper(user.id) %>
如果我尝试运行该网页,它会抛出一个错误,提示该方法未定义。
提前致谢!
【问题讨论】:
标签:
ruby-on-rails
ruby
erb
helper
【解决方案1】:
你没有完全正确的命名约定。
将您的帮助文件命名为 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
【解决方案2】:
你的助手是否应该在一个名为 app/helpers/foo_helper.rb 的文件中,其中包含一个与助手同名的模块(骆驼化)像:
module FooHelper
def sample_helper(cont)
# implementation
end
end
这就是 Rail 自动加载助手的方式。