gpt4 book ai didi

elixir - 如何检查 eex 中是否存在变量?

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

我正在研究模型的原始部分,我已为其添加了图像支持。理想情况下,如果您正在编辑模型,我想显示图像,我会这样做。

<%= Logo.url({@company.logo, @company}, :thumb) %>

问题是公司变量仅在编辑操作中可用,因为新操作上还存在公司,所以我需要检查@company是否已设置。

<%= unless @company do %>
<%= Logo.url({@company.logo, @company}, :thumb) %>
<% end %>

问题是这会产生以下错误。

“分配@company在eex模板中不可用。可用分配:[:action, :changeset]”

我尝试使用 is_nil,但同样的错误。

最佳答案

编辑 Phoenix 0.14.0之前如果未设置,@company 将返回 nil。它被更改为 raise ,以便赋值是显式的(显式优于隐式。)

<小时/>

如果您使用@companyassigns.company,则会引发错误。但是,如果您使用assigns[:company],那么如果未设置该值,它将返回 nil。

<%= if assigns[:company] do %>
<%= Logo.url({@company.logo, @company}, :thumb) %>
<% end %>

值得注意的是,如果您使用嵌套模板,那么您也需要传递它:

<h1>New thing</h1>
<%= render "form.html", changeset: @changeset,
action: thing_path(@conn, :create),
company: assigns[:company] %>

关于elixir - 如何检查 eex 中是否存在变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32412042/

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