module AjaxFieldUpdater module ClassMethods def ajax_updater_for(object, method, user_opts={}) opts = {:render => lambda {|o| {:text => o.send(method)}} }.merge(user_opts) define_method "update_#{object}_#{method}" do instance_variable_set("@#{object}", object.to_s.camelcase.constantize.find(params[:id])) o = instance_variable_get("@#{object}") if params[object][method] o.send("#{method}=", params[object][method]) o.save end render opts[:render].call(o) end end end def self.included(c) c.extend ClassMethods end end