2017-09-18 9 views
0

aタグで折り返して要素を折り返したい場合は、特定の条件のみを指定したいと思います。phoenixテンプレートの条件付きhtml要素の折り返し

コードはこのように見えますが、より良い方法があるはずです。

<%= if condition do %> 
<a href="/"> 
<% end %> 

<p>Text</p> 

<%= if condition do %> 
</a> 
<% end %> 

これを書くにはどうすればよいでしょうか?

答えて

1

これを一度だけ使用したいと思っているのですが、HTML内の一部のコンテンツを条件付きでラッピングする再利用可能な関数任意の属性を持つタグ、私はこのようなヘルパー関数を使用したい:

ビュー:

defmodule MyApp.PageView do 
    use MyApp.Web, :view 

    def content_tag_if(condition, name, attrs, [do: content]) do 
    if condition do 
     content_tag name, attrs, [do: content] 
    else 
     content 
    end 
    end 
end 

テンプレート:

<%= content_tag_if 1 > 2, :a, [href: "/"] do %> 
    <p>Text</p> 
<% end %> 

<%= content_tag_if 1 < 2, :a, [href: "/"] do %> 
    <p>Text</p> 
<% end %> 

出力:

<p>Text</p> 
<a href="/"> 
    <p>Text</p> 
</a> 
1

私は確かに適切なビューのモジュールで宣言された関数を使用します:

def wrap_in_a_if_condition(html_text, href, condition) do 
    if condition do 
    # here build A - propably using [Phoenix.HTML.link/2][1] 
    else 
    html_text 
    end 
end 

をそして、あなたはそのビューのすべてのテンプレートのためにそれを使用することができます。グローバルにする必要がある場合は、他のビューでインポートすることができます。

関連する問題