Ticket #360: fix_form_helper_scope_2.patch

File fix_form_helper_scope_2.patch, 1.8 kB (added by j.naga..@gmail.com, 11 months ago)
  • lib/merb_helpers/form_helpers.rb

    old new  
    132132      def fields_for(obj, attrs=nil, &block) 
    133133        @_obj ||= nil 
    134134        @_block ||= nil 
     135        @_object_name ||= nil 
    135136        obj = obj_from_ivar_or_sym(obj) 
    136137        old_obj, @_obj = @_obj, obj 
    137         @_object_name = "#{@_obj.class}".snake_case 
    138138        old_block, @_block = @_block, block 
     139        old_object_name, @_object_name = @_object_name, "#{@_obj.class}".snake_case 
    139140         
    140141        concat(capture(&block), block.binding) 
    141142 
    142         @_obj, @_block = old_obj, old_block         
     143        @_obj, @_block, @_object_name = old_obj, old_block, old_object_name 
    143144      end 
    144145       
    145146      def control_name(col) #:nodoc: 
  • spec/merb_helpers_spec.rb

    old new  
    151151    _buffer.should match_tag(:input, :name => "fake_model[foo]", :value => "foowee", :type => "text") 
    152152  end 
    153153   
     154  it "should pass context back to the old object after exiting block" do 
     155    @obj2 = FakeModel2.new 
     156    fields_for(:obj) do 
     157      text_control(:foo).should match_tag(:input, :id => "fake_model_foo", :name => "fake_model[foo]", :type => "text") 
     158       
     159      fields_for(:obj2) do 
     160        text_control(:foo).should match_tag(:input, :id => "fake_model2_foo", :name => "fake_model2[foo]", :type => "text") 
     161      end 
     162       
     163      text_control(:bar).should match_tag(:input, :id => "fake_model_bar", :name => "fake_model[bar]", :type => "text") 
     164    end 
     165  end 
    154166end 
    155167 
    156168describe "text_field (basic)" do