模板变量是否在此演示者的application_helper.rb中从self初始化?

时间:2016-04-28 17:16:33

标签: ruby-on-rails presenter

所以我在下面的Rails 4.2应用程序中看到了一些代码。

1)kite_presenter.rb中的@template是什么类型的对象?它是ActionView的一个实例,它是如何访问辅助工具的,例如 image_tag ? 2)如果1的答案是Actionview的一个实例,那么在application_helper.rb中,自我如何知道引用一个ActionView对象?

kite_presenter.rb

class KitePresenter < SimpleDelegator
  def initialize(kite, template)
    super(kite)
    @template = template
  end
  def tail_display
    h.image_tag("tail.png", class: 'gray')
  end
end

application_helper.rb

module ApplicationHelper

  def present(object, klass = nil)
    klass ||= "#{object.class}Presenter".constantize
    presenter = klass.new(object, self)
    yield presenter if block_given?
    presenter
  end

end

some_html.erb

   <% present(kite) do |kite_presenter| %>
     <%= kite_presenter.tail_display %>
   <% end %>

1 个答案:

答案 0 :(得分:0)

正确,它是当前视图对象本身。

我已经写了一篇关于PORO主持人的博客文章,应该有所帮助

http://joewoodward.me/i-take-it-back/