1

我正在尝试按照Presenter设计模式构建我的 Rails 应用程序。我的页面的一部分包含一些嵌套在锚标记内的 div,使用常规 html 可以正常工作,但是当我尝试使用 ActionView 帮助程序呈现它时不起作用。

我的视图如下所示:

<div class="hero-container clear">
    <%= presenter.cta_background do %>
        <%= presenter.header %>

        <%= presenter.subheader %>

        <%= presenter.button %>
    <% end %>
</div>

我的演讲者班:

class Presenter < SimpleDelegator
    def initialize(model, view)
        @model, @view = model, view
        super @model
    end

    def h
        @view
    end

    def header
        if @model.header.present?
            h.content_tag :div, @model.header
        end
    end

    def subheader
        if @model.subheader.present?
            h.content_tag :div, @model.subheader
        end
    end

    def cta_button
        if @model.text.present?
            h.content_tag :div, @model.text
        end
    end

    def cta_background
        h.link_to @model.target do
            yield
            nil
        end
    end
end

它最终呈现如下所示的 html:

<div class="hero-container clear">

        <div>Eaque ea adipisci accusantium.</div>

        <div>Sed quibusdam amet et voluptatum.</div>

        <div>Click here</div>
        <a href="/products">products</a>
</div>

我的目标是在锚标记包含三个 div ,这是通过将它们以块的形式传递给link_to函数来完成的。当我像我正在做的那样从另一种方法调用该块时,为什么它不起作用?

4

0 回答 0