如何像凤凰城其他语言一样早日归来

taj*_*iro 0 elixir phoenix-framework

我想在有效检查后返回,然后转到其他页面(1)。然而,似乎之后,然后呈现索引页面(2)。

def index(conn, %{"id" => id}) do
  unless Model.is_valid!(id) do
      conn
        |> redirect(to: other_path(conn, :other)) #(1)
  end
  # More process are after this.
  render(conn, "index.html") #(2)
end
Run Code Online (Sandbox Code Playgroud)

似乎一次重定向了其他页面,但之后继续进行。我怎样才能像其他语言一样以回程停止?

Dog*_*ert 5

Elixir没有任何办法可以提早归还。您必须使用unless/ elseif/ else

def index(conn, %{"id" => id}) do
  unless Model.is_valid!(id) do
    conn
    |> redirect(to: other_path(conn, :other)) #(1)
  else
    # More process are after this.
    render(conn, "index.html") #(2)
  end
end
Run Code Online (Sandbox Code Playgroud)

如果您不想增加缩进级别,则最好的办法是创建另一个函数并在else块中调用它。