虽然我想在我的模板中使用所有这些,但我希望 @class 和 @id 来自调用模板时插入值和 @ class_a 来自 V-6ren">
gpt4 book ai didi

elixir - Phoenix : how to use values inserted in a template helper in a view function

转载 作者:行者123 更新时间:2023-12-02 05:30:00 24 4
gpt4 key购买 nike

假设我有这个模板sample.html.eex:

<div class="<%= @class %>" id="<%= @id %>">
<a href="home.html" class="<%= @class_a"></a>
</div>

虽然我想在我的模板中使用所有这些,但我希望 @class@id 来自调用模板时插入值和 @ class_a 来自 View 函数,该函数将其生成为 @class@id 的串联。我是说:1)当我在其他模板中调用此模板时,我向其传递以下值:

<%= render myApp.ComponentView, "sample.html",
id: "six",
class: "six" %>

2)我的 component_view 中有一个函数:

def class_a (conn) do
class+id
end

然后,模板就可以访问class_a。我的问题是如何在我的 View 中访问 classid 值。我在尝试执行此操作时遇到了几个错误。如何正确地做到这一点?

最佳答案

您不能将 @class@id 传递给您的 class_a 函数吗?

def class_a(class, id) do
"#{class}#{id}"
end

class_a(class, id)

然后您可以从模板中调用此函数:

<div class="<%= @class %>" id="<%= @id %>">
<a href="home.html" class="<%= class_a(@class, @id)"></a>
</div>

请记住,使用@并不是什么魔法。 @ 是在赋值中使用变量的 Eex 方式。如果您的 View 上有一个函数 class_a,那么您将使用 class_a 调用它。 @class_a 存在的唯一方法是将其添加到 conn 结构上的 assigns 中。

如果您想要一个采用单个 conn 的函数,您可以使用 conn.assigns 来获取值:

def class_a(conn) do
class = conn.assigns.class
id = conn.assigns.id

"#{class}#{id}"
end

关于elixir - Phoenix : how to use values inserted in a template helper in a view function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34355261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com