a
タグで折り返して要素を折り返したい場合は、特定の条件のみを指定したいと思います。phoenixテンプレートの条件付きhtml要素の折り返し
コードはこのように見えますが、より良い方法があるはずです。
<%= if condition do %>
<a href="/">
<% end %>
<p>Text</p>
<%= if condition do %>
</a>
<% end %>
これを書くにはどうすればよいでしょうか?
a
タグで折り返して要素を折り返したい場合は、特定の条件のみを指定したいと思います。phoenixテンプレートの条件付きhtml要素の折り返し
コードはこのように見えますが、より良い方法があるはずです。
<%= if condition do %>
<a href="/">
<% end %>
<p>Text</p>
<%= if condition do %>
</a>
<% end %>
これを書くにはどうすればよいでしょうか?
これを一度だけ使用したいと思っているのですが、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>
私は確かに適切なビューのモジュールで宣言された関数を使用します:
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
をそして、あなたはそのビューのすべてのテンプレートのためにそれを使用することができます。グローバルにする必要がある場合は、他のビューでインポートすることができます。