我正在使用宝石国家来填充国家选择元素。我想将自定义国家/地区添加到 gem 提供的 ISO3116 国家/地区列表中。
宝石:https ://github.com/hexorx/countries
我已经阅读了国家宝石的 wiki。我已尝试按照“加载自定义数据”部分提供的说明进行操作。不幸的是,对于像我这样的 Rails 新手来说,它们太稀少了。
当我尝试启动开发服务器时,我收到下面列出的错误。
我不知道应该在哪里添加以下代码。我已将其添加到“config/initializers”,因为根据指南 ( http://guides.rubyonrails.org/initialization.html ),此目录中的文件是在初始化应用程序时加载 gem 文件后加载的。因此,我的困惑。到执行下面的代码时,常量“ISO3116”不应该已经初始化了吗?
代码:
配置/初始化程序/custom_countries.rb
ISO3116::Data.register(
continent: "Europe",
alpha2: "EN",
alpha3: "ENG",
name: "England"
)
宝石文件
source 'https://rubygems.org'
#default:
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.5.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
#jQuery plugin for drop-in fix binded events problem caused by Turbolinks
gem 'jquery-turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc
#Optional Defaults:
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Unicorn as the app server
# gem 'unicorn'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
#locales, inc en-GB
gem 'rails-i18n'
#OS:
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
#Servers:
#Thin web server, better than stock server
gem 'thin'
#Debugging:
group :development do #Development. Avoid using in production.
#Display compile/runtime errors better in browser
gem "better_errors"
#Required for better_errors advanced features (REPL, variable incpection)
gem "binding_of_caller"
# Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console', '~> 2.0'
end
group :development, :test do #Development & Test Avoid using in production.
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
end
#Models:
#Pagination
gem 'kaminari'
#search
gem 'filterrific'
#ISO 3166 countries list
gem 'countries'
gem 'country_select'
#Views:
#animation of page loads
gem "animate-rails"
#Simple Form, for creating froms
gem 'simple_form'
#nested forms
gem 'cocoon'
#Bootstrap, front-end web development framework to inetgrate with rails
gem 'bootstrap-sass', '~> 3.2.0'
#Allow you to write CSS (SASS, LESS etc) rules without vendor prefixes.
gem 'autoprefixer-rails'
#Override the browser default confirmation pop up with a bootsrap modal
gem 'data-confirm-modal'
#Testing:
group :development, :test do
#Exit test-suite execution at first test-failure.
gem 'minitest-fail-fast'
#Takes development database and converts to fixtures for testing
gem 'fixtures_dumper'
#Used to generate fake data
gem 'faker'
end
尝试启动时出现服务器错误
C:\Users\Patrick\Desktop\Consign>rails server -b 0.0.0.0 -p 80
=> Booting Thin
=> Rails 4.2.5.1 application starting in development on http://0.0.0.0:80
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Exiting
C:/Users/Patrick/Desktop/Consign/config/initializers/custom_countries.rb:1:in `<
top (required)>': uninitialized constant ISO3116 (NameError)
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/engine.rb:652:in `block in load_config_initializer'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/activesupport-
4.2.5.1/lib/active_support/notifications.rb:166:in `instrument'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/engine.rb:651:in `load_config_initializer'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/engine.rb:616:in `block (2 levels) in <class:Engine>'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/engine.rb:615:in `each'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/engine.rb:615:in `block in <class:Engine>'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/initializable.rb:30:in `instance_exec'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/initializable.rb:30:in `run'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/initializable.rb:55:in `block in run_initializers'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:226:in `block i
n tsort_each'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:348:in `block (
2 levels) in each_strongly_connected_component'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:418:in `block (
2 levels) in each_strongly_connected_component_from'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:427:in `each_st
rongly_connected_component_from'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:417:in `block i
n each_strongly_connected_component_from'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/initializable.rb:44:in `each'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/initializable.rb:44:in `tsort_each_child'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `call'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:411:in `each_st
rongly_connected_component_from'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:347:in `block i
n each_strongly_connected_component'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `call'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each_st
rongly_connected_component'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:224:in `tsort_e
ach'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/tsort.rb:205:in `tsort_e
ach'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/initializable.rb:54:in `run_initializers'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/application.rb:352:in `initialize!'
from C:/Users/Patrick/Desktop/Consign/config/environment.rb:6:in `<top (
required)>'
from C:/Users/Patrick/Desktop/Consign/config.ru:3:in `require'
from C:/Users/Patrick/Desktop/Consign/config.ru:3:in `block in <main>'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/rack-1.6.5/lib
/rack/builder.rb:55:in `instance_eval'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/rack-1.6.5/lib
/rack/builder.rb:55:in `initialize'
from C:/Users/Patrick/Desktop/Consign/config.ru:in `new'
from C:/Users/Patrick/Desktop/Consign/config.ru:in `<main>'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/rack-1.6.5/lib
/rack/builder.rb:49:in `eval'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/rack-1.6.5/lib
/rack/builder.rb:49:in `new_from_string'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/rack-1.6.5/lib
/rack/builder.rb:40:in `parse_file'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/rack-1.6.5/lib
/rack/server.rb:299:in `build_app_and_options_from_config'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/rack-1.6.5/lib
/rack/server.rb:208:in `app'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/commands/server.rb:61:in `app'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/rack-1.6.5/lib
/rack/server.rb:336:in `wrapped_app'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/commands/server.rb:139:in `log_to_stdout'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/commands/server.rb:78:in `start'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/commands/commands_tasks.rb:80:in `block in server'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/commands/commands_tasks.rb:75:in `tap'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/commands/commands_tasks.rb:75:in `server'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/railties-4.2.5
.1/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
谢谢你,PQ
PS。这是我在 StackOverflow 上提出的第二个(也许是第三个)问题。欢迎反馈。