2012-02-14 48 views
2

我在lib /中创建了一个名为br_states.rb的文件,当我在我的视图中调用状态时,我收到以下错误消息:Rails 3 - lib未初始化的常量ActionView :: CompiledTemplates :: STATES

uninitialized constant ActionView::CompiledTemplates::STATES 

我已经在我的application.rb中设置了autoload_path来加载lib文件夹,但还没有工作。 config.autoload_paths << File.join(config.root, "lib")

这是我的代码:https://gist.github.com/1822459

什么问题?

回答

2

您可能需要为该常量提供一个名称空间。我认为Rails的的自动装载程序无法弄清楚,你STATES常数在一个叫br_states.rb文件中定义:

# lib/states.rb 
module States 
    BRAZIL = [ 
    # ... 
    ] 
end 

我也建议以下gg_s的回答是:

# new.html.erb 
<%= adr.select :state, options_for_select(States::BRAZIL), :label => "Estado", :required => true %> 
1

使用options_for_select

<%= adr.select :state, options_for_select(STATES), :label => "Estado", :required => true %> 

请注意,Rails会使用每个两元素数组是这样的:[option text, option value],这意味着你的窗体的select将全面“AC”的,“AL”,...并会提交“英亩”,“阿拉戈斯”,...

我想你想让它显示全文并返回缩写。切换您的STATES阵列中的值:

STATES = [[ "Acre",  "AC" ], 
      [ "Alagoas", "AL" ], 
      [ "Amazonas", "AM" ], 
      [ "Amapá", "AP" ], 
      # and so on... 
0

在缩写文件,行18缺少一组双引号。这可能不是这个特定问题的根源,但它肯定会造成问题。

相关问题