내 응용 프로그램에는 많은 상수가 있으므로 이러한 상수에 det_constants.yml이라는 상수 파일을 만들었습니다.상수 문제
이 상수 파일을로드하는 lib 폴더에 constants.rb 파일이 있습니다 나는 그것이,
<%= Constants[:company_type] %>
그러나 행에 오류
NameError in Vendors#index
uninitialized constant ActionView::CompiledTemplates::Constants
가 발생합니다
<%= Constants[:company_type] %>
할 내보기 파일에서
/lib/constants.rb
module Constants
# Allows accessing config variables from det_constants.yml like so:
# Constants[:abc] => xyz
def self.[](key)
unless @config
raw_config = File.read(Rails.root.to_s + "/config/det_constants.yml")
@config = YAML.load(raw_config)[Rails.env].symbolize_keys
end
@config[key]
end
def self.[]=(key, value)
@config[key.to_sym] = value
end
end
, 나는 같은 일을 할 경우 콘솔에서 올바르게 실행됩니다.
ruby-1.9.2-head > Constants[:company_type]
=> {"Private"=>1, "Public"=>2}
어디에 문제가 있는지 알 수 없습니다. Rails 3에서이 작업을 수행하는 새롭고 나은 방법이 있다면 알려주십시오. 나는 당신을 상상
Ruby version: ruby 1.9.2p110 (2010-12-20 revision 30269) [i686-linux]
Rails version: Rails 3.0.3
감사합니다. 그것은 효과가 있었다. –
이것이 최선의 방법인지 알고 싶었습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? –
글쎄, 그건 분명 나쁜 점이 아니야. 나는 당신이 루비 상징을 좋아한다는 것을 본다. 그들은 yaml, ** : thing : 123 **처럼 직접 나타날 수 있습니다. 또한 기호는 구현중인'enum' 디자인 패턴의 필요성을 제한 할 수 있습니다. 'CONSTANTS :: Const1'의 분명한 대안을 고려하십시오. 나는 상수에 대한 오버로드 된 배열 연산자를 좋아하지만, 나는 내 직업에서 SW 아키텍트에게 그것을 사용하는 것을 정당화하고 싶지 않다. :-) 나는 "자기 자신을 사랑한다."[], 이제 나는 그것에 대한 문제를 생각해보고 시도해야만하는 새로운 해결책이있다. :-) – DigitalRoss