2016-07-20 11 views
1

複数のブロックを使用して部分的にブロックすることはできますか?私はちょっとこのように、私のプロジェクトにブートストラップモーダルボックスを実装するためにそれを使用したい:Rails 4 - 部分的に複数のブロックを返します

<div class="modal fade" role="dialog" aria-labelledby="myModalLabel"> 
    <div class="modal-dialog modal-lg" role="document"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <%= yield :header %> 
      </div> 

      <div class="modal-body"> 
       <%= yield :body %> 
      </div> 

      <div class="modal-footer"> 
       <%= yield :footer %> 
      </div> 
     </div> 
    </div> 
</div> 

そして、これは私がそれを

<%= render partial: "shared/modal" do %> 
    <% content_for :header do %> 
     ...   
    <% end %> %> 

    <% content_for :body do %> 
     ...   
    <% end %> %> 

    <% content_for :footer do %> 
     ...   
    <% end %> %> 
<% end %> 

を使用して考えていたか、多かれ少なかれあるに方法はありますこれを行う?これは何らかの理由で悪いアプローチかもしれませんか?

+0

同じビューで複数の利回りを設定することはできます。それを試しましたか? – MarsAtomic

+0

はい、このコードは機能しません。 –

+0

@EnriqueMorenoTent全く同じことをやろうとしています。あなたはこれまでこれを働かせることができましたか? – sambecker

答えて

0

部分的に複数の歩留まりブロックを使用することは問題ありません。唯一のことは、多くが実際に必要であることを確認することです。 content_forの例では、セクションは基本的にコンテンツのプレースホルダーであり、アプリケーションのロジックに基づいて変化する可能性があります。したがって、1ページに複数の利回りを使用することは全く問題ありません。

+1

しかし、私が追加したコードは動作しません。どうして? –

0

私はあなたのレンダー部分に問題があると思います。レンダー部分ブロック内のすべてのcontent_forブロックがあることに注意してください。多くの試行錯誤

<%= content_for :thing do %> 
    Some content 
<% end %> 
<%= render partial: "blah" %> 
0

、私はRailsの5でこれを解決したが、それは仕事を得るために、私の部分に空白yieldを挿入するために必要だと思う:

_partial.html.erb

<div class="partial"> 
    <%= yield %> <!--Does not do anything--> 
    <div class="header"> 
    <%= yield :header %> 
    </div> 
    <div class="text"> 
    <%= yield :text %> 
    </div> 
</div> 

full_layout.html.erb

として実装

関連する問題