2015-11-27 16 views
7

私は自分のアプリをDRYとモジュラーにしようとしています。しかし、私は、私はこのエラーを得た別のテンプレート(大きなモジュール)の内部で、それを「instanciating」/呼び出し時に渡される動的な値を受け取るコンポーネント(小さなテンプレート)を置くことをしようと試みたとき:フェニックス:テンプレート内に値を割り当てているレンダリングテンプレート

assign @conn not available in eex template. Available assigns: [] 

私のコンポーネント(小テンプレート)という

<div class="menuButton main <%= @class %>" id="<%= @id %>"> 
    <div class="menuButton firstChild linesItem"></div> 
    <div class="menuButton firstChild textItem">MENU</div> 
</div> 

は、私が使用して自分のモジュールでそれを挿入:私は、これは私のモジュール(大きなテンプレート)の内部に挿入

<%= render myapp.ComponentView, "menuButton.html", class: nil, id: "menuButtonMenu" %> 

をし、私が使用して自分のページに自分のモジュールを挿入:

<%= render myapp.ModuleView, "header.html" %> 

この小さな部品/より大きなモジュールのこのロジックをきれいにしてDRYを維持しながら、この作業を行う最良の方法は何ですか?

答えて

15

AbMのが言ったように、あなたが明示的にたとえば、あなたが気に割り当てを渡す必要があります:

<%= render myapp.ModuleView, "header.html", conn: @conn %> 

サポートしたい場合は、条件付きで割り当てられ、あなたはこのようなassignsをそれらをオフに参照できます。

<%= link "a link", to: "/", class: assigns[:class] || "default" %> 
関連する問題