在视图轨道3中使用辅助方法

时间:2012-03-27 06:21:55

标签: ruby-on-rails ruby-on-rails-3

您好我有一个帮助方法,它返回一个字符串,我需要在每个视图上使用它。 我正在尝试将此方法添加到ApplicationHelper

我的ApplicationController看起来像这样

class ApplicationController < ActionController::Base
  helper :application
end

我的ApplicationHelper看起来像这样

module ApplicationHelper
  def ThemeDir
    "http://mysite.com/something/something"
  end
end

当我尝试在视图中使用此方法时

<%= ThemeDir %> 

它给了我以下错误。

uninitialized constant ActionView::CompiledTemplates::ThemeDir

有人可以帮我这个。

2 个答案:

答案 0 :(得分:9)

Ruby中的约定是只有常量(即“经典”常量,类和模块)以大写字母开头。方法和变量应始终以小写字母开头。

同样的常量是用驼峰情况编写的(注意ApplicationController中的两个“驼峰”?),而变量和方法通常用下划线语法编写,例如theme_dir。这将ruby与Java,Javascript或C#等语言区分开来,其中camelcase在任何地方使用(尽管它们仍然通过第一个字母的大小写区分常量/初始化函数与变量和函数)。

差异很重要,因为方法的解析方式与常量不同。因此,Ruby必须知道您请求的内容是常量还是方法或局部变量。

结束这一点,请为您的帮助方法theme_dir命名,一切都应该没问题。

答案 1 :(得分:5)

在Rails的ThemeDir'中将它视为常量。

将方法名称设为'theme_dir',然后尝试。