分享 [进阶 tip] 从 controller 和 view 以外的地方 render

fredwu · 2012年06月20日 · 最后由 orichi 回复于 2012年09月17日 · 3287 次阅读

如果你需要在 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

嘿嘿~

P.S. 如果一切顺利的话,今天晚上可以发布这个关于本地测试 API 的 gem 了,嘿嘿~

嗯,作为本地测试 api 的工具,确实还不错!

@fredwu abstract_controller 是因为什么才有的,我看本身有 action_controller 了,为什么要抽象一个 cotroller 出来?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号