This bug was introduced with Rails 1.2.
How to reproduce:
Use in_place_edit_for with a non-string field, e.g. BigDecimal or Float.
Backtrace:
NoMethodError (undefined method `size' for #<BigDecimal:b70dd614,'0.0',4(8)>):
/usr/local/ruby-1.8.5/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/cgi_process.rb:227:in `set_content_length!'
/usr/local/ruby-1.8.5/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/cgi_process.rb:186:in `out'
/usr/local/ruby-1.8.5/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/dispatcher.rb:41:in `dispatch'
/opt/lsws/fcgi-bin/RailsRunner.rb:12
Patch:
--- in_place_editing.rb.orig 2007-01-28 18:11:18.000000000 +0100
+++ /usr/local/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/macros/in_place_editing.rb 2007-01-28 18:11:45.000000000 +0100
@@ -24,7 +24,7 @@
define_method("set_#{object}_#{attribute}") do
@item = object.to_s.camelize.constantize.find(params[:id])
@item.update_attribute(attribute, params[:value])
- render :text => @item.send(attribute)
+ render :text => @item.send(attribute).to_s
end
end
end