Added the ability to register methods to handle specific render option keys and render :json

上级 e693f45e
......@@ -62,8 +62,9 @@ Rake::TestTask.new(:test_new_base_on_old_tests) do |t|
# Dir.glob( "test/{dispatch,template}/**/*_test.rb" ).sort +
t.test_files = %w(
addresses_render base benchmark caching capture content_type dispatcher
flash mime_responds record_identifier redirect render rescue url_rewriter
webservice verification request_forgery_protection send_file
flash mime_responds record_identifier redirect
render render_json
send_file request_forgery_protection rescue url_rewriter verification webservice
).map { |name| "test/controller/#{name}_test.rb" }
end
......
......@@ -7,6 +7,8 @@ module ActionController
autoload :Rails2Compatibility, "action_controller/new_base/compatibility"
autoload :Redirector, "action_controller/new_base/redirector"
autoload :Renderer, "action_controller/new_base/renderer"
autoload :RenderOptions, "action_controller/new_base/render_options"
autoload :Renderers, "action_controller/new_base/render_options"
autoload :Rescue, "action_controller/new_base/rescuable"
autoload :Testing, "action_controller/new_base/testing"
autoload :UrlFor, "action_controller/new_base/url_for"
......
......@@ -11,6 +11,8 @@ class Base < Http
include ActionController::UrlFor
include ActionController::Redirector
include ActionController::Renderer
include ActionController::RenderOptions
include ActionController::Renderers::Json
include ActionController::Layouts
include ActionController::ConditionalGet
......
module ActionController
module RenderOptions
extend ActiveSupport::DependencyModule
included do
extlib_inheritable_accessor :_renderers
self._renderers = []
end
def render_to_body(options)
_renderers.each do |renderer|
if options.key?(renderer)
_process_options(options)
return send("_render_#{renderer}", options[renderer], options)
end
end
super
end
end
module Renderers
module Json
extend ActiveSupport::DependencyModule
depends_on RenderOptions
included do
_renderers << :json
end
def _render_json(json, options)
json = ActiveSupport::JSON.encode(json) unless json.respond_to?(:to_str)
json = "#{options[:callback]}(#{json})" unless options[:callback].blank?
response.content_type ||= Mime::JSON
self.response_body = json
end
end
end
end
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册