ruby-on-rails-3 – 如何从演示者层渲染轨道?

好吧,我现在也使用rails 3.2.1进入这种情况
以下是app / presenters / form_presenter.rb中的演示者

class FormPresenter
  def render_form
    ActionView::Base.new.render partial: "passions/add_form"
  end
end

从我所说的观点来看,

...
= AddFormPresenter.new.render_form
...

但它有以下错误

13:14:12 ActionView::MissingTemplate - Missing partial passions/passion_concept_add_form with {:locale=>[:en],:formats=>[:html,:text,:js,:css,:ics,:csv,:png,:jpeg,:gif,:bmp,:tiff,:mpeg,:xml,:RSS,:atom,:yaml,:multipart_form,:url_encoded_form,:json,:pdf,:zip],:handlers=>[:erb,:builder,:slim,:coffee,:rabl]}. Searched in:
...

RAILS-3.1 render method for ActionView::Base有这个类似的问题,但它没有帮助.

如何从演示者层渲染此部分?

解决方法

好吧,我只是通过使用前置过滤器抓取视图上下文来做到这一点.我的参考是: https://github.com/amatsuda/active_decorator/blob/master/lib/active_decorator/view_context.rb

所以类似于:

class FormPresenter
  def render_form
    FromPresenter.view_context.render partial: "passions/add_form"
  end

  class << self
    def view_context
      Thread.current[:view_context]
    end

    def view_context=(view_context)
      Thread.current[:view_context] = view_context
    end
  end

  module Controller
    extend ActiveSupport::Concern

    included do
      before_filter do |controller|
        FormPresenter.view_context = controller.view_context
      end
    end
  end
end

并在application_controller.rb中

class ApplicationController < ActionController::Base
...
   include FormPresenter::Controller
...
end

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...