1

背景

在我学习 Phoenix LiveView 的过程中,我发现自己使用了一个使用已弃用符号的渲染函数:

  def render(_assigns) do
    ~E"""
    <menubar>
      <menu label="<%= gettext "File" %>">
          <hr/>
          <item onclick="quit"><%= gettext "Quit" %></item>
      </menu>
      <menu label="<%= gettext "Extra" %>">
          <item onclick="browser"><%= gettext "Open Browser" %></item>
      </menu>
    </menubar>
    """
  end

eex现在,我知道在 Elixir中使用代码是安全的。但是编译器说我应该用~H. 所以我的第一次尝试如下:

  def render(assigns) do
    ~H"""
    <menubar>
      <menu label="{@gettext('File')}">
          <hr/>
          <item onclick="quit"><%= gettext "Quit" %></item>
      </menu>
      <menu label="{@gettext 'Extra'}">
          <item onclick="browser"><%= gettext "Open Browser" %></item>
      </menu>
    </menubar>
    """
  end

哪个不起作用并且无法在菜单中正确显示文本:

在此处输入图像描述

问题

我究竟做错了什么?

4

1 回答 1

2

回答

我尝试的问题是@角色。我可能错过了理解错误消息并得出结论@必须是变量的一部分。

正确的版本如下所示:

  def render(assigns) do
    ~H"""
    <menubar>
      <menu label={gettext("File")}>
          <hr/>
          <item onclick="quit"><%= gettext "Quit" %></item>
      </menu>
      <menu label={gettext("Extra")}>
          <item onclick="browser"><%= gettext "Open Browser" %></item>
      </menu>
    </menubar>
    """
  end
于 2021-12-23T19:45:45.883 回答