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