Фреймворк Phoenix: передавать ошибки набора изменений между контроллерами - PullRequest
0 голосов
/ 21 мая 2018

Когда я отправляю свою форму, я хотел бы перенаправить на ту же страницу, если есть ошибки (показывающие ошибки набора изменений в представлении).

Но на самом деле моя веб-страница происходит от "LandingController" и проверкиделается на «UserController»

Если я использую «перенаправление», я не знаю, как передать ошибки набора изменений из «UserController» в «LandingController».

Если я использую »render/3 "это означает, что моя веб-страница существует как минимум дважды: одна как представление" LandinController ", а другая как представление" userController ".

Я думаю, что я могу сделать второе решение, но это означает, что есть serevalСтраница дублируется, когда на них есть формы.

Есть ли другое решение?Какой самый быстрый способ продолжить?

На самом деле мой код выглядит следующим образом:

[вид из LandingController]

<%= 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 %>

[часть моего UserController]

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
...