在 Solidus 3.0 中 /admin/products/ 中更改 config.currency 后的 ArgumentError
ArgumentError after changed config.currency in /admin/products/ in Solidus 3.0
我是 ruby rails 和 Solidus 的新手。
我按照本指南创建了我的项目:https://guides.solidus.io/developers/getting-started/first-time-installation.html
然后,我想在 config/initializers/spree.rb
中将我的默认货币从“美元”更改为“澳元”
( config.currency = "AUD"
)
然后,当我访问 http://localhost:3000/admin/products。
表明
(* 其他页面正常)
请帮忙。(尝试重新启动服务器但仍然如此)
Ruby 版本:ruby '3.0.2'
Solidus 版本:“solidus”,“~> 3.0”
Rails6.1.4.1
spree.rb
# Configure Solidus Preferences
# See http://docs.solidus.io/Spree/AppConfiguration.html for details
Spree.config do |config|
# Core:
# Default currency for new sites
config.currency = "AUD"
# from address for transactional emails
config.mails_from = "store@example.com"
# Uncomment to stop tracking inventory levels in the application
# config.track_inventory_levels = false
# When set, product caches are only invalidated when they fall below or rise
# above the inventory_cache_threshold that is set. Default is to invalidate cache on
# any inventory changes.
# config.inventory_cache_threshold = 3
# Configure adapter for attachments on products and taxons (use ActiveStorageAttachment or PaperclipAttachment)
config.image_attachment_module = 'Spree::Image::ActiveStorageAttachment'
config.taxon_attachment_module = 'Spree::Taxon::ActiveStorageAttachment'
# Defaults
# Permission Sets:
# Uncomment and customize the following line to add custom permission sets
# to a custom users role:
# config.roles.assign_permissions :role_name, ['Spree::PermissionSets::CustomPermissionSet']
# Frontend:
# Custom logo for the frontend
# config.logo = "logo/solidus.svg"
# Template to use when rendering layout
# config.layout = "spree/layouts/spree_application"
# Admin:
# Custom logo for the admin
# config.admin_interface_logo = "logo/solidus.svg"
# Gateway credentials can be configured statically here and referenced from
# the admin. They can also be fully configured from the admin.
#
# Please note that you need to use the solidus_stripe gem to have
# Stripe working: https://github.com/solidusio-contrib/solidus_stripe
#
# config.static_model_preferences.add(
# Spree::PaymentMethod::StripeCreditCard,
# 'stripe_env_credentials',
# secret_key: ENV['STRIPE_SECRET_KEY'],
# publishable_key: ENV['STRIPE_PUBLISHABLE_KEY'],
# server: Rails.env.production? ? 'production' : 'test',
# test_mode: !Rails.env.production?
# )
end
Spree::Frontend::Config.configure do |config|
config.locale = 'en'
end
Spree::Backend::Config.configure do |config|
config.locale = 'en'
# Uncomment and change the following configuration if you want to add
# a new menu item:
#
# config.menu_items << config.class::MenuItem.new(
# [:section],
# 'icon-name',
# url: 'https://solidus.io/'
# )
end
Spree::Api::Config.configure do |config|
config.requires_authentication = true
end
Spree.user_class = "Spree::LegacyUser"
# Rules for avoiding to store the current path into session for redirects
# When at least one rule is matched, the request path will not be stored
# in session.
# You can add your custom rules by uncommenting this line and changing
# the class name:
#
# Spree::UserLastUrlStorer.rules << 'Spree::UserLastUrlStorer::Rules::AuthenticationRule'
宝石文件
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '3.0.2'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
gem 'rails', '~> 6.1.4', '>= 6.1.4.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '~> 1.4'
# Use Puma as the app server
gem 'puma', '~> 5.0'
# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Active Storage variant
# gem 'image_processing', '~> 1.2'
# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', require: false
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
group :development do
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem 'web-console', '>= 4.1.0'
# Display performance information such as SQL time and flame graphs for each request in your browser.
# Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
gem 'rack-mini-profiler', '~> 2.0'
gem 'listen', '~> 3.3'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
end
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 3.26'
gem 'selenium-webdriver'
# Easy installation and use of web drivers to run system tests with browsers
gem 'webdrivers'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem "solidus", "~> 3.0"
gem 'solidus_auth_devise'
使用以下代码解决:Spree::Price.update_all(currency: 'AUD')
如果您提供空字符串,BigDecimal
会引发 ArgumentError
。
require 'bigdecimal'
BigDecimal('')
#=> ArgumentError (invalid value for BigDecimal(): "")
BigDecimal('0')
#=> 0.0
例如,您可以确保所有产品的默认值为 0。您可以通过编辑迁移来实现此目的:
t.integer :value, default: 0
我是 ruby rails 和 Solidus 的新手。 我按照本指南创建了我的项目:https://guides.solidus.io/developers/getting-started/first-time-installation.html
然后,我想在 config/initializers/spree.rb
中将我的默认货币从“美元”更改为“澳元”
( config.currency = "AUD"
)
然后,当我访问 http://localhost:3000/admin/products。
表明
请帮忙。(尝试重新启动服务器但仍然如此)
Ruby 版本:ruby '3.0.2'
Solidus 版本:“solidus”,“~> 3.0”
Rails6.1.4.1
spree.rb
# Configure Solidus Preferences
# See http://docs.solidus.io/Spree/AppConfiguration.html for details
Spree.config do |config|
# Core:
# Default currency for new sites
config.currency = "AUD"
# from address for transactional emails
config.mails_from = "store@example.com"
# Uncomment to stop tracking inventory levels in the application
# config.track_inventory_levels = false
# When set, product caches are only invalidated when they fall below or rise
# above the inventory_cache_threshold that is set. Default is to invalidate cache on
# any inventory changes.
# config.inventory_cache_threshold = 3
# Configure adapter for attachments on products and taxons (use ActiveStorageAttachment or PaperclipAttachment)
config.image_attachment_module = 'Spree::Image::ActiveStorageAttachment'
config.taxon_attachment_module = 'Spree::Taxon::ActiveStorageAttachment'
# Defaults
# Permission Sets:
# Uncomment and customize the following line to add custom permission sets
# to a custom users role:
# config.roles.assign_permissions :role_name, ['Spree::PermissionSets::CustomPermissionSet']
# Frontend:
# Custom logo for the frontend
# config.logo = "logo/solidus.svg"
# Template to use when rendering layout
# config.layout = "spree/layouts/spree_application"
# Admin:
# Custom logo for the admin
# config.admin_interface_logo = "logo/solidus.svg"
# Gateway credentials can be configured statically here and referenced from
# the admin. They can also be fully configured from the admin.
#
# Please note that you need to use the solidus_stripe gem to have
# Stripe working: https://github.com/solidusio-contrib/solidus_stripe
#
# config.static_model_preferences.add(
# Spree::PaymentMethod::StripeCreditCard,
# 'stripe_env_credentials',
# secret_key: ENV['STRIPE_SECRET_KEY'],
# publishable_key: ENV['STRIPE_PUBLISHABLE_KEY'],
# server: Rails.env.production? ? 'production' : 'test',
# test_mode: !Rails.env.production?
# )
end
Spree::Frontend::Config.configure do |config|
config.locale = 'en'
end
Spree::Backend::Config.configure do |config|
config.locale = 'en'
# Uncomment and change the following configuration if you want to add
# a new menu item:
#
# config.menu_items << config.class::MenuItem.new(
# [:section],
# 'icon-name',
# url: 'https://solidus.io/'
# )
end
Spree::Api::Config.configure do |config|
config.requires_authentication = true
end
Spree.user_class = "Spree::LegacyUser"
# Rules for avoiding to store the current path into session for redirects
# When at least one rule is matched, the request path will not be stored
# in session.
# You can add your custom rules by uncommenting this line and changing
# the class name:
#
# Spree::UserLastUrlStorer.rules << 'Spree::UserLastUrlStorer::Rules::AuthenticationRule'
宝石文件
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '3.0.2'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
gem 'rails', '~> 6.1.4', '>= 6.1.4.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '~> 1.4'
# Use Puma as the app server
gem 'puma', '~> 5.0'
# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Active Storage variant
# gem 'image_processing', '~> 1.2'
# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', require: false
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
group :development do
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem 'web-console', '>= 4.1.0'
# Display performance information such as SQL time and flame graphs for each request in your browser.
# Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
gem 'rack-mini-profiler', '~> 2.0'
gem 'listen', '~> 3.3'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
end
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 3.26'
gem 'selenium-webdriver'
# Easy installation and use of web drivers to run system tests with browsers
gem 'webdrivers'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem "solidus", "~> 3.0"
gem 'solidus_auth_devise'
使用以下代码解决:Spree::Price.update_all(currency: 'AUD')
BigDecimal
会引发 ArgumentError
。
require 'bigdecimal'
BigDecimal('')
#=> ArgumentError (invalid value for BigDecimal(): "")
BigDecimal('0')
#=> 0.0
例如,您可以确保所有产品的默认值为 0。您可以通过编辑迁移来实现此目的:
t.integer :value, default: 0