Sha256: ecbc9a1eaa0dbfbc173e34df2fc08761f2a261d5a8d8b4e4f669125a060bedd7
Contents?: true
Size: 1.07 KB
Versions: 4
Compression:
Stored size: 1.07 KB
Contents
module JellyController protected include Jelly::Common def jelly_callback(callback_base_name = @action_name, options = {}, &block) raw_jelly_callback(options) do arguments = block ? instance_eval(&block) : [] arguments = [arguments] unless arguments.is_a?(Array) jelly_notify_hash("on_#{callback_base_name}", *arguments).merge(options) end end def raw_jelly_callback(options={}, &block) options.symbolize_keys! options[:format] ||= if params[:callback] :jsonp elsif request.xhr? :json else :iframe end render :inline => jelly_callback_erb(options, &block) end def jelly_callback_erb(options={}, &block) options[:format] ||= :json @jelly_block = block case options[:format].to_sym when :iframe "<textarea>#{jelly_callback_erb_template}</textarea>" when :jsonp "#{params[:callback]}(#{jelly_callback_erb_template});" else jelly_callback_erb_template end end def jelly_callback_erb_template "<%= instance_eval(&@jelly_block).to_json %>" end end
Version data entries
4 entries across 4 versions & 1 rubygems