Redirect Phoenix框架:在控制器之间传递变更集错误

Redirect Phoenix框架:在控制器之间传递变更集错误,redirect,parameter-passing,phoenix-framework,Redirect,Parameter Passing,Phoenix Framework,当我提交表单时,如果有错误(在视图上显示变更集错误),我希望在同一页面上重定向 但实际上我的网页来自一个“着陆控制器”,验证是在一个“用户控制器”上完成的 如果我使用“重定向”,我不知道如何将变更集错误从“UserController”传递到“LandingController” 如果我使用“render/3”,这意味着我的网页至少存在两次:一次作为“LandinController”视图,另一次作为“userController”视图 我想我可以做第二个解决方案,但这意味着当有表单时,会有重复

当我提交表单时,如果有错误(在视图上显示变更集错误),我希望在同一页面上重定向

但实际上我的网页来自一个“着陆控制器”,验证是在一个“用户控制器”上完成的

如果我使用“重定向”,我不知道如何将变更集错误从“UserController”传递到“LandingController”

如果我使用“
render/3
”,这意味着我的网页至少存在两次:一次作为“LandinController”视图,另一次作为“userController”视图

我想我可以做第二个解决方案,但这意味着当有表单时,会有重复的sereval页面

还有别的解决办法吗?最合适的方法是什么

实际上,我的代码如下所示:

[从着陆控制器查看]

<%= form_for @changeset, user_path(@conn, :create), [class: "formulaire"], fn f -> %>
   <%= select f, :genders, Enum.map(@genders, &{&1.name, &1.id}), prompt: "Sexe"%>

   <%= email_input f, :email %>
   <%= error_tag f, :email %>

   <%= text_input f, :lastname %>
   <%= error_tag f, :lastname %>

   <%= text_input f, :firstname %>
   <%= error_tag f, :firstname %>

   <%= hidden_input f, :redirect_to, value: @conn.request_path %>

   <%= submit "Submit" %>
 <% end %>
def create(conn, %{"user" => user_params}) do
  case Accounts.create_user(user_params) do
    {:ok, user} ->
      conn
      |> put_flash(:info, "User created successfully.")
      |> redirect(to: user_path(conn, :show, user))
    {:error, %Ecto.Changeset{} = changeset} ->
      genders = HexProject.Repo.all(
        from g in Gender,
        select: %{name: g.name, id: g.id}
      )

      conn
      |> put_flash(:error, "User was not created.")
      |> redirect(to: user_params["redirect_to"])
      #|> render("new.html", changeset: changeset, genders: genders)
  end
end

我真的不明白你为什么要这样做。但是,您可以将信息放入用户会话,然后在重定向页面上读取并清除该会话信息。但是
render/3
通常是你应该在这里使用的东西。我编辑了我文章的大部分内容。我不知道这样是否更清楚?我的目标是在两个控制器之间传递更改集错误,如果我使用
render/3
(但我不喜欢
render/3
解决方案),我可以显示这些错误,为什么您要将
LandingController
用于新的用户表单而不是
UserController
?我想这就是你的问题来源。哦!是的,使用像
user\u path GET/user HexProjectWeb.UserController:index
user\u path GET/users HexProjectWeb.UserController:index
这样的用户路由将解决问题。在这种情况下,它是可以的(因为它是我的主页)。我想知道为什么我以前没有考虑过。但是,在另一个上下文中,如果我有一个包含2或3个关于不同主题的“野生形式”的页面,我就不能使用这个解决方案。异步表单能解决这个问题吗?非常感谢你!!我不知道你所说的“野生动物”是什么意思。我也不确定你所说的“异步表单”是什么意思,我最好的猜测是你指的是使用AJAX之类的东西提交表单?