Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 4997

Show
Ignore:
Timestamp:
09/04/06 20:01:52 (2 years ago)
Author:
david
Message:

Added locals hash to partials, which makes for convenient access of some times available/some times not variables (closes #5491) [wbruce@gmail.com]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/actionpack/CHANGELOG

    r4995 r4997  
    11*SVN* 
     2 
     3* Added locals hash to partials, which makes for convenient access of some times available/some times not variables #5491 [wbruce@gmail.com]. Example: 
     4 
     5    # two different render calls 
     6    render :partial => "person", :locals => { :include_overview => true } 
     7    render :partial => "person" 
     8     
     9    # view 
     10    <% if locals[:include_overview] %> 
     11      Show overview 
     12    <% end %> 
    213 
    314* Fixed FormOptionsHelper#select to respect :selected value #5813 
  • trunk/actionpack/lib/action_view/base.rb

    r4885 r4997  
    457457        @@template_args[render_symbol] = locals_keys.inject({}) { |h, k| h[k] = true; h } 
    458458 
    459         locals_code = "
     459        locals_code = "locals = local_assigns.with_indifferent_access\n
    460460        locals_keys.each do |key| 
    461461          locals_code << "#{key} = local_assigns[:#{key}] if local_assigns.has_key?(:#{key})\n" 
  • trunk/actionpack/test/controller/render_test.rb

    r4977 r4997  
    9393    ActionView::Base.local_assigns_support_string_keys = false 
    9494  end 
     95 
     96  def accessing_locals_hash_in_inline_template 
     97    name = params[:local_name] 
     98    render :inline => "<%= 'Goodbye, ' + locals[:local_name] %>", 
     99           :locals => { :local_name => name } 
     100  end 
     101   
     102  def accessing_locals_hash_in_inline_template_setting_string_key 
     103    name = params[:local_name] 
     104    ActionView::Base.local_assigns_support_string_keys = true 
     105    render :inline => "<%= 'Goodbye, ' + locals[:local_name] %>", 
     106           :locals => { "local_name" => name } 
     107    ActionView::Base.local_assigns_support_string_keys = false 
     108  end 
     109   
     110  def accessing_locals_hash_in_inline_template_getting_string_key 
     111    name = params[:local_name] 
     112    ActionView::Base.local_assigns_support_string_keys = true 
     113    render :inline => "<%= 'Goodbye, ' + locals['local_name'] %>", 
     114           :locals => { :local_name => name } 
     115    ActionView::Base.local_assigns_support_string_keys = false 
     116  end   
    95117 
    96118  def render_to_string_test