如果你需要在 controller 或 view 以外的地方使用 render
的话,rails 默认是不允许的。
更新了一篇 blog: http://fredwu.me/post/25496030861/rails-tip-render-views-outside-of-controllers-or
我摸索了一下,需要这么干——
module ApiTaster
class FormBuilder < AbstractController::Base
include AbstractController::Rendering
include ActionView::Context
include ActionView::Helpers::CaptureHelper
self.view_paths = ApiTaster::Engine.root.join('app/views')
def initialize(params)
flush_output_buffer
@_buffer = ''
add_to_buffer(params)
end
def html
@_buffer
end
private
def add_to_buffer(params)
# 这里是我自己的显示逻辑
end
end
end
嘿嘿~