From 865874ab6a8be80d896604ba4106e14b57ebfdc5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 19 Apr 2005 10:26:03 +0000 Subject: Fixed stringification on all assigned hashes. The sacrifice is that assigns[:person] wont work in testing. Instead assigns["person"] or assigns(:person) must be used. In other words, the keys of assigns stay strings but weve added a method-based accessor to appease the need for symbols. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1223 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_controller/assertions.rb | 6 +++++- actionpack/lib/action_view/base.rb | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 8c1302b431..1cdf28ee06 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed stringification on all assigned hashes. The sacrifice is that assigns[:person] won't work in testing. Instead assigns["person"] or assigns(:person) must be used. In other words, the keys of assigns stay strings but we've added a method-based accessor to appease the need for symbols. + * Fixed that rendering a template would require a connection to the database #1146 diff --git a/actionpack/lib/action_controller/assertions.rb b/actionpack/lib/action_controller/assertions.rb index 53d53af400..e46e868ff5 100644 --- a/actionpack/lib/action_controller/assertions.rb +++ b/actionpack/lib/action_controller/assertions.rb @@ -14,10 +14,14 @@ module Test #:nodoc: # # These collections can be used just like any other hash: # - # assert_not_nil assigns[:person] # makes sure that a @person instance variable was set + # assert_not_nil assigns(:person) # makes sure that a @person instance variable was set # assert_equal "Dave", cookies[:name] # makes sure that a cookie called :name was set as "Dave" # assert flash.empty? # makes sure that there's nothing in the flash # + # For historic reasons, the assigns hash uses string-based keys. So assigns[:person] won't work, but assigns["person"] will. To + # appease our yearning for symbols, though, an alternative accessor has been deviced using a method call instead of index referencing. + # So assigns(:person) will work just like assigns["person"], but again, assigns[:person] will not work. + # # On top of the collections, you have the complete url that a given action redirected to available in redirect_to_url. # # For redirects within the same controller, you can even call follow_redirect and the redirect will be follow triggering another diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb index cffbbfcb6b..72200904f0 100644 --- a/actionpack/lib/action_view/base.rb +++ b/actionpack/lib/action_view/base.rb @@ -157,7 +157,7 @@ module ActionView #:nodoc: end def initialize(base_path = nil, assigns_for_first_render = {}, controller = nil)#:nodoc: - @base_path, @assigns = base_path, assigns_for_first_render.with_indifferent_access + @base_path, @assigns = base_path, assigns_for_first_render @controller = controller end -- cgit v1.2.3