mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Fix t('.helper').
This commit is contained in:
@@ -276,9 +276,11 @@ module ActionView #:nodoc:
|
||||
@config = nil
|
||||
@formats = formats
|
||||
@assigns = assigns_for_first_render.each { |key, value| instance_variable_set("@#{key}", value) }
|
||||
@_controller = controller
|
||||
@helpers = self.class.helpers || Module.new
|
||||
@_content_for = Hash.new {|h,k| h[k] = ActionView::SafeBuffer.new }
|
||||
|
||||
@_controller = controller
|
||||
@_content_for = Hash.new {|h,k| h[k] = ActionView::SafeBuffer.new }
|
||||
@_virtual_path = nil
|
||||
self.view_paths = view_paths
|
||||
end
|
||||
|
||||
|
||||
@@ -25,11 +25,15 @@ module ActionView
|
||||
end
|
||||
alias :l :localize
|
||||
|
||||
|
||||
private
|
||||
|
||||
def scope_key_by_partial(key)
|
||||
if key.to_s.first == "."
|
||||
template.path_without_format_and_extension.gsub(%r{/_?}, ".") + key.to_s
|
||||
if @_virtual_path
|
||||
@_virtual_path.gsub(%r{/_?}, ".") + key.to_s
|
||||
else
|
||||
raise "Cannot use t(#{key.inspect}) shortcut because path is not available"
|
||||
end
|
||||
else
|
||||
key
|
||||
end
|
||||
|
||||
@@ -87,9 +87,9 @@ module ActionView
|
||||
|
||||
source = <<-end_src
|
||||
def #{method_name}(local_assigns)
|
||||
old_output_buffer = output_buffer;#{locals_code};#{code}
|
||||
_old_virtual_path, @_virtual_path = @_virtual_path, #{@details[:virtual_path].inspect};_old_output_buffer = output_buffer;#{locals_code};#{code}
|
||||
ensure
|
||||
self.output_buffer = old_output_buffer
|
||||
@_virtual_path, self.output_buffer = _old_virtual_path, _old_output_buffer
|
||||
end
|
||||
end_src
|
||||
|
||||
|
||||
@@ -117,15 +117,18 @@ module ActionView
|
||||
# # :api: plugin
|
||||
def path_to_details(path)
|
||||
# [:erb, :format => :html, :locale => :en, :partial => true/false]
|
||||
if m = path.match(%r'(?:^|/)(_)?[\w-]+((?:\.[\w-]+)*)\.(\w+)$')
|
||||
partial = m[1] == '_'
|
||||
details = (m[2]||"").split('.').reject { |e| e.empty? }
|
||||
handler = Template.handler_class_for_extension(m[3])
|
||||
if m = path.match(%r'((^|.*/)(_)?[\w-]+)((?:\.[\w-]+)*)\.(\w+)$')
|
||||
partial = m[3] == '_'
|
||||
details = (m[4]||"").split('.').reject { |e| e.empty? }
|
||||
handler = Template.handler_class_for_extension(m[5])
|
||||
|
||||
format = Mime[details.last] && details.pop.to_sym
|
||||
locale = details.last && details.pop.to_sym
|
||||
|
||||
return handler, :format => format, :locale => locale, :partial => partial
|
||||
virtual_path = (m[1].gsub("#{@path}/", "") << details.join("."))
|
||||
|
||||
return handler, :format => format, :locale => locale, :partial => partial,
|
||||
:virtual_path => virtual_path
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -135,16 +135,17 @@ class HelperTest < ActiveSupport::TestCase
|
||||
assert methods.include?('foobar')
|
||||
end
|
||||
|
||||
def test_deprecation
|
||||
assert_deprecated do
|
||||
ActionController::Base.helpers_dir = "some/foo/bar"
|
||||
end
|
||||
assert_deprecated do
|
||||
assert_equal ["some/foo/bar"], ActionController::Base.helpers_dir
|
||||
end
|
||||
ensure
|
||||
ActionController::Base.helpers_path = [File.dirname(__FILE__) + '/../fixtures/helpers']
|
||||
end
|
||||
# TODO Add this deprecation back before Rails 3.0 final release
|
||||
# def test_deprecation
|
||||
# assert_deprecated do
|
||||
# ActionController::Base.helpers_dir = "some/foo/bar"
|
||||
# end
|
||||
# assert_deprecated do
|
||||
# assert_equal ["some/foo/bar"], ActionController::Base.helpers_dir
|
||||
# end
|
||||
# ensure
|
||||
# ActionController::Base.helpers_path = [File.dirname(__FILE__) + '/../fixtures/helpers']
|
||||
# end
|
||||
|
||||
private
|
||||
def expected_helper_methods
|
||||
|
||||
1
actionpack/test/fixtures/test/translation.erb
vendored
Normal file
1
actionpack/test/fixtures/test/translation.erb
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<%= t('.helper') %>
|
||||
@@ -1,9 +1,9 @@
|
||||
require 'abstract_unit'
|
||||
|
||||
class TranslationHelperTest < Test::Unit::TestCase
|
||||
class TranslationHelperTest < ActiveSupport::TestCase
|
||||
include ActionView::Helpers::TagHelper
|
||||
include ActionView::Helpers::TranslationHelper
|
||||
|
||||
|
||||
attr_reader :request
|
||||
def setup
|
||||
end
|
||||
@@ -25,8 +25,8 @@ class TranslationHelperTest < Test::Unit::TestCase
|
||||
end
|
||||
|
||||
def test_scoping_by_partial
|
||||
expects(:template).returns(stub(:path_without_format_and_extension => "people/index"))
|
||||
I18n.expects(:translate).with("people.index.foo", :locale => 'en', :raise => true).returns("")
|
||||
translate ".foo", :locale => 'en'
|
||||
I18n.expects(:translate).with("test.translation.helper", :raise => true).returns("helper")
|
||||
@view = ActionView::Base.new(ActionController::Base.view_paths, {})
|
||||
assert_equal "helper", @view.render(:file => "test/translation")
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user