mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge remote branch 'origin/master'
This commit is contained in:
commit
f09d8f3e68
4 changed files with 38 additions and 3 deletions
|
@ -693,6 +693,11 @@ module ActionDispatch
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def root(options={})
|
||||||
|
options[:on] ||= :collection if @scope[:scope_level] == :resources
|
||||||
|
super(options)
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def parent_resource #:nodoc:
|
def parent_resource #:nodoc:
|
||||||
@scope[:scope_level_resource]
|
@scope[:scope_level_resource]
|
||||||
|
|
|
@ -13,6 +13,9 @@ module ActionView
|
||||||
# unchanged if can't be converted into a valid number.
|
# unchanged if can't be converted into a valid number.
|
||||||
module NumberHelper
|
module NumberHelper
|
||||||
|
|
||||||
|
DEFAULT_CURRENCY_VALUES = { :format => "%u%n", :unit => "$", :separator => ".", :delimiter => ",",
|
||||||
|
:precision => 2, :significant => false, :strip_insignificant_zeros => false }
|
||||||
|
|
||||||
# Raised when argument +number+ param given to the helpers is invalid and
|
# Raised when argument +number+ param given to the helpers is invalid and
|
||||||
# the option :raise is set to +true+.
|
# the option :raise is set to +true+.
|
||||||
class InvalidNumberError < StandardError
|
class InvalidNumberError < StandardError
|
||||||
|
@ -104,9 +107,9 @@ module ActionView
|
||||||
|
|
||||||
defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {})
|
defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {})
|
||||||
currency = I18n.translate(:'number.currency.format', :locale => options[:locale], :default => {})
|
currency = I18n.translate(:'number.currency.format', :locale => options[:locale], :default => {})
|
||||||
defaults = defaults.merge(currency)
|
|
||||||
|
|
||||||
options = options.reverse_merge(defaults)
|
defaults = DEFAULT_CURRENCY_VALUES.merge(defaults).merge!(currency)
|
||||||
|
options = defaults.merge!(options)
|
||||||
|
|
||||||
unit = options.delete(:unit)
|
unit = options.delete(:unit)
|
||||||
format = options.delete(:format)
|
format = options.delete(:format)
|
||||||
|
|
|
@ -186,6 +186,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :products, :constraints => { :id => /\d{4}/ } do
|
resources :products, :constraints => { :id => /\d{4}/ } do
|
||||||
|
root :to => "products#root"
|
||||||
|
get :favorite, :on => :collection
|
||||||
resources :images
|
resources :images
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -963,7 +965,9 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
||||||
get '/products/1'
|
get '/products/1'
|
||||||
assert_equal 'pass', @response.headers['X-Cascade']
|
assert_equal 'pass', @response.headers['X-Cascade']
|
||||||
get '/products'
|
get '/products'
|
||||||
assert_equal 'products#index', @response.body
|
assert_equal 'products#root', @response.body
|
||||||
|
get '/products/favorite'
|
||||||
|
assert_equal 'products#favorite', @response.body
|
||||||
get '/products/0001'
|
get '/products/0001'
|
||||||
assert_equal 'products#show', @response.body
|
assert_equal 'products#show', @response.body
|
||||||
|
|
||||||
|
@ -981,6 +985,12 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_root_works_in_the_resources_scope
|
||||||
|
get '/products'
|
||||||
|
assert_equal 'products#root', @response.body
|
||||||
|
assert_equal '/products', products_root_path
|
||||||
|
end
|
||||||
|
|
||||||
def test_module_scope
|
def test_module_scope
|
||||||
with_test_routes do
|
with_test_routes do
|
||||||
get '/token'
|
get '/token'
|
||||||
|
|
|
@ -45,6 +45,12 @@ class NumberHelperTest < ActionView::TestCase
|
||||||
assert_equal("&$ - 10.00", number_to_currency(10, :locale => 'ts'))
|
assert_equal("&$ - 10.00", number_to_currency(10, :locale => 'ts'))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_number_to_currency_with_clean_i18n_settings
|
||||||
|
clean_i18n do
|
||||||
|
assert_equal("$10.00", number_to_currency(10))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_number_with_precision
|
def test_number_with_precision
|
||||||
#Delimiter was set to ""
|
#Delimiter was set to ""
|
||||||
assert_equal("10000", number_with_precision(10000, :locale => 'ts'))
|
assert_equal("10000", number_with_precision(10000, :locale => 'ts'))
|
||||||
|
@ -92,4 +98,15 @@ class NumberHelperTest < ActionView::TestCase
|
||||||
#Significant was set to true with precision 2, with custom translated units
|
#Significant was set to true with precision 2, with custom translated units
|
||||||
assert_equal "4.3 cm", number_to_human(0.0432, :locale => 'ts', :units => :custom_units_for_number_to_human)
|
assert_equal "4.3 cm", number_to_human(0.0432, :locale => 'ts', :units => :custom_units_for_number_to_human)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def clean_i18n
|
||||||
|
load_path = I18n.load_path.dup
|
||||||
|
I18n.load_path.clear
|
||||||
|
I18n.reload!
|
||||||
|
yield
|
||||||
|
ensure
|
||||||
|
I18n.load_path = load_path
|
||||||
|
I18n.reload!
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue