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

Changeset 5423

Show
Ignore:
Timestamp:
11/03/06 04:18:52 (2 years ago)
Author:
bitsweat
Message:

Merge [5422] from trunk.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1-2-pre-release/actionpack/CHANGELOG

    r5413 r5423  
    11*SVN* 
     2 
     3* Set ActionView::Base.default_form_builder once rather than passing the :builder option to every form or overriding the form helper methods.  [Jeremy Kemper] 
    24 
    35* Deprecate expire_matched_fragments. Use expire_fragment instead.  #6535 [Bob Silva] 
  • branches/1-2-pre-release/actionpack/lib/action_view/helpers/form_helper.rb

    r5247 r5423  
    143143      # Note: This also works for the methods in FormOptionHelper and DateHelper that are designed to work with an object as base. 
    144144      # Like collection_select and datetime_select. 
    145       def fields_for(object_name, *args, &proc
     145      def fields_for(object_name, *args, &block
    146146        raise ArgumentError, "Missing block" unless block_given? 
    147147        options = args.last.is_a?(Hash) ? args.pop : {} 
    148148        object  = args.first 
    149         yield((options[:builder] || FormBuilder).new(object_name, object, self, options, proc)) 
     149 
     150        builder = options[:builder] || ActionView::Base.default_form_builder 
     151        yield builder.new(object_name, object, self, options, block) 
    150152      end 
    151153 
     
    437439    end 
    438440  end 
     441 
     442  class Base 
     443    cattr_accessor :default_form_builder 
     444    self.default_form_builder = ::ActionView::Helpers::FormBuilder 
     445  end 
    439446end 
  • branches/1-2-pre-release/actionpack/test/template/form_helper_test.rb

    r5346 r5423  
    397397    assert_dom_equal expected, _erbout 
    398398  end 
    399    
     399 
     400  def test_default_form_builder 
     401    old_default_form_builder, ActionView::Base.default_form_builder = 
     402      ActionView::Base.default_form_builder, LabelledFormBuilder 
     403 
     404    _erbout = '' 
     405    form_for(:post, @post) do |f| 
     406      _erbout.concat f.text_field(:title) 
     407      _erbout.concat f.text_area(:body) 
     408      _erbout.concat f.check_box(:secret) 
     409    end 
     410 
     411    expected =  
     412      "<form action='http://www.example.com' method='post'>" + 
     413      "<label for='title'>Title:</label> <input name='post[title]' size='30' type='text' id='post_title' value='Hello World' /><br/>" + 
     414      "<label for='body'>Body:</label> <textarea name='post[body]' id='post_body' rows='20' cols='40'>Back to the hill and over it again!</textarea><br/>" + 
     415      "<label for='secret'>Secret:</label> <input name='post[secret]' checked='checked' type='checkbox' id='post_secret' value='1' />" + 
     416      "<input name='post[secret]' type='hidden' value='0' /><br/>" + 
     417      "</form>" 
     418 
     419    assert_dom_equal expected, _erbout 
     420  ensure 
     421    ActionView::Base.default_form_builder = old_default_form_builder 
     422  end 
     423 
    400424  # Perhaps this test should be moved to prototype helper tests. 
    401425  def test_remote_form_for_with_labelled_builder