1

TL; DR:ページで同じレイアウトを複数回使用するにはどうすればよいですか?繰り返しレイアウトでパーシャルをレンダリングしようとするすべての試みは、最初にレイアウトが使用される要素に入ります。

クイック情報:

使用する

Rails 2.3.14
Ruby 1.8.7      

私のパーシャルはcontent_forを使用しています。これは、レイアウトに非常に便利です。

基本的に、私のレイアウトは次のようになります。

<div class="header">
    <%= yield :modal_header %>
</div>
<div class="body">
    <%= yield :modal_body or yield %>
</div>

一般的に、これは私がモーダルレイアウトを使用する方法です:

<% content_for :modal_header do %>
    header text / elements
<% end %>

<% content_for :modal_body do %>
    body info / settings for object or warning message, etc
<% end %>

これが私のページでモーダルをレンダリングする方法です:

<%= render :partial => "section_options", :layout => "modal" %>

そしてそれは本当にうまくいきます

しかし

同じページで、別のモーダルをレンダリングしようとすると、次のようになります。

<%= render :partial => "section_content_options", :layout => "modal" %>

これは私のページの上部にあるモーダルに起こることです(HTMLドキュメントで最初に発生します)

<div class="header">
    -- header from second partial --
    -- header from first partial --
</div>
<div class="body">
    -- body from second partial --
    -- body from first partial --
</div>

次に、ページの後半で、2番目のパーシャルのコンテンツが次のようになっているはずです。すべてが正しくレンダリングされます...この例のために:

<div class="header">
    section content options
</div>

<div class="body">
   section contents options ... options
   lil confirm / cancel buttons
</div>

これを修正する方法はありますか?この振る舞いは、javascriptバインディングも実際に混乱させます。それで。うん。

レール2.3.14のレイアウトにバグはありますか?この問題を解決するには、Rails 3にアップグレードする必要がありますか?

4

1 に答える 1

2

モーダルは、レイアウトではなく、パーシャルを使用してレンダリングする必要があります。レイアウトは、特定の部分ではなく、サイト全体の全体的なレイアウトを定義する方法として設計されています。モーダル(設計上は特定のもの)のようなものは、条件またはJavaScriptのいずれかを介してレンダリングされる部分的なものである必要があります。

于 2012-07-03T22:49:50.937 に答える