rails 3.1,如何定义全局常量?

时间:2011-11-06 21:37:31

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

我试图在config\environments\development.rb

中定义一个常量
NEXT_PAGE_ID = 'next_page'

但是当我尝试在视图中访问它时,我收到此错误

  

未初始化的常量ActionView :: CompiledTemplates :: NEXT_PAGE_ID

我试图在/config/initializers/course_builder定义它,如下所示:

NEXT_PAGE_ID = 'next_page'

但我得到了同样的错误。

重新启动服务器没有帮助。我该怎么办?

修改

以下是完整错误:

未初始化的常量ActionView :: CompiledTemplates :: NEXT_PAGE_ID

提取的来源(第23行):

20:             %></li>
21: 
22:         <li><%= if @page.position < @page.chapter.pages.count then
23:             next_page= Page.find(Page.where(:position => @page.position+1, :chapter_id => @page.chapter.id))
24:             link_to 'Next Page', next_page, {:id=>NEXT_PAGE_ID}
25:             end
26:         %></li>

2 个答案:

答案 0 :(得分:0)

我会改用会话变量。在这种情况下(或在大多数情况下)不需要全局,并且显然存在问题。

session[:current_page_id]

session[:next_page_id]

答案 1 :(得分:0)

你可以这样做:

Object.const_set('NEXT_PAGE_ID', 'next_page')

但你可能应该使用某种配置文件来处理这些事情,而不是污染全局命名空间。