3

状況

そのため、ページにアクセスしたときに、レイアウトをパーシャルに適用できるようにしたいと考えています (同じレイアウトで必要な 3 つのパーシャルがあります)。今、私はこのコマンドでそれをやろうとしています:

<%= render :partial => "shared/services/essay", :layout => "layouts/services/tab_pane", :locals => { :service => "essay" } %>

どこshared/services/essayに次のようなものがあります:

<% content_for :intro do %>
<p>
    blah.
</p>
<% end %>

<% content_for :workflow do %>
<div>
    blah.
</div>
<% end %>

<% content_for :value_prop do %>
<p>
    blah.
</p>
<% end %>

そして `layouts/services/tab_pane' は次のようになります:

<div class="tab-pane fade in" id=<%= service %> >
    <%= yield :intro %>

    <div class="span7 workflow">
        <h3>Workflow</h3>
        <%= yield :workflow %>
    </div>

    <div class="span5 value-proposition">
        <h3>Our Value Proposition for You</h3>
        <%= yield :value_prop %>
        <div class="call-to-action">
            <%= link_to "Action!", contact_path, class: "btn btn-large btn-warning" %>
        </div>
    </div>
</div>

問題

ロードすると、レイアウト HTML が表示されます。コンテンツは一切通過しません。基本的に、収益はコンテンツなどを引き込んでいません。

誰か助けてくれませんか?ありがとう!

私が試したこと

Rubyガイドに記載されているようにネストされたレイアウトを試してみると(追加...

<%= render :template => "layouts/services/tab_pane", :locals  => { :service => "essay" } %>

2 番目のパーシャルには最初のパーシャルのコンテンツが含まれ、3 番目のパーシャルには 1 番目と 2 番目の両方のコンテンツが含まれます。したがって、2 番目のパーシャルにはセクションごとに 2 つの部分が含まれ、3 番目の部分にはセクションごとに 3 つの部分が含まれます。ありがとう!

アップデート:

問題は解決しました (Michael に感謝します) が、このような問題に対処する際のベスト プラクティスとは何かを考えていたのだと思います。将来このようなことを避けて、ページ内の部分ではなく、ページ全体にテンプレート/レイアウトを与えることだけを心配する必要がありますか? ありがとう!

4

1 に答える 1

3

パーシャルのViewFlow処理に見舞われているのではないかと思います。これを何度か呼んでいますか?問題は、railsがcontent_forデータをハッシュとその非破壊に格納することです。

次を追加してみてください。

def yield_content!(content_key) view_flow.content.delete(content_key) end

ApplicationHelperで、レイアウトファイルでyieldの代わりにyield_contentを呼び出します。

于 2012-10-28T20:54:04.467 に答える