Ruby on rails 在没有关联模型的情况下使用演示者(Ryan Bates';风格)

Ruby on rails 在没有关联模型的情况下使用演示者(Ryan Bates';风格),ruby-on-rails,ruby,railscasts,presenter,Ruby On Rails,Ruby,Railscasts,Presenter,我想使用presenters(如图所示:)来清理静态页面视图,但他的方法似乎依赖于一个底层模型,而静态页面没有这个模型。我可以在静态主页上使用此方法吗 我的用户设置(运行良好,并有相应的型号)如下所示: static_presenter.admin_all_notes 演示者: class UserPresenter < BasePresenter presents :user def h @template end def admin_text

我想使用presenters(如图所示:)来清理静态页面视图,但他的方法似乎依赖于一个底层模型,而静态页面没有这个模型。我可以在静态主页上使用此方法吗

我的用户设置(运行良好,并有相应的型号)如下所示:

static_presenter.admin_all_notes
演示者:

class UserPresenter < BasePresenter
  presents :user
    def h
      @template
    end

    def admin_text
      if user.admin?
        'This is an admin'
      else
       'This is not an admin'
      end
    end
end
我想使用类似的结构来清理我的
\u标题
部分,它在
application.html.erb
中呈现,其中一部分如下所示:

static_presenter.admin_all_notes
from\u header.html.erb:

<% if current_user && current_user.admin? %>
  <li><a href="#">All Notes</a></li>
<% end %>
要将必要的视图代码显示到
home.html.erb

我不确定我是以最好的方式问这个问题的,但我的目标是使用Ryan Bates这样的演示者来清理我的静态页面视图,这些视图没有相应的模型

谢谢

编辑:


我特别困惑于如何包装静态页面(例如,
home.html.erb
)以及向块传递什么,接下来,如何从静态页面引用presenter类中的方法。

您可以使用相同的方法。您只需要为演示者选择一个名称(例如static_presenter),而不会将模型实例传递给初始化,因为您正在演示静态或全局信息。否则,方法是相同的

因此,对于您当前的课程,我认为您可以:

class StaticPagesPresenter

  def initialize(template)
    @template = template
    yield self if block_given?
  end

  def h
    @template
  end

  def admin_notes
    if h.current_user && h.current_user.admin?
       '<li><a href="#">All Notes</a></li>'
    end
  end

end
class StaticPagesPresenter
def初始化(模板)
@模板=模板
如果给定块,则屈服于自身?
结束
def h
@模板
结束
def管理说明
如果h.current\u user&&h.current\u user.admin?
“
  • ” 结束 结束 结束
    然后在标题部分中,您可以有如下内容:

    <% StaticPagesPresenter.new(self) do |presenter| %>
    <%   presenter.admin_notes %>
    <% end %>
    
    
    
    我假设有Rails助手可以作为当前
    admin\u notes
    中HTML的替代品,我不确定您是否需要
    h.
    来引用
    当前用户