Как перенаправить обратно на текущую страницу после запроса на удаление формы в феникс-фреймворке, используя scrivener - PullRequest
0 голосов
/ 12 октября 2018

Я использую scrivener_ecto и scrivener_html в феникс-фреймворке.У меня есть список контактов с 300 контактами.Когда я нажимаю удалить контакт на странице 6, после отправки удаления я перенаправляю на первую страницу списка контактов.Я хочу остаться на текущей странице (например, на странице 6) после удаления.Как я могу это сделать?

Я пытался получить информацию о параметрах от контроллера удаления, но у него нет информации о странице (параметры запроса) Я пытался

IO.inspect conn.query_string

, но он возвращает "" здесьудалить действие в person_controller.ex

  def action(conn, _) do
    user = conn.assigns.current_user
    phonebook = Contact.get_phonebook!(conn.params["phonebook_id"], user.id)
    arg_list = [conn, conn.params, phonebook]
    apply(__MODULE__, action_name(conn), arg_list)
  end

  def delete(conn, %{"id" => id}, phonebook) do
    person = Contact.get_person!(id, phonebook.id)
    {:ok, _person} = Contact.delete_person(person)

    conn
    |> put_flash(:info, "Contact deleted successfully.")
    |> redirect(to: phonebook_path(conn, :show, phonebook))
  end

в шаблоне

<%= button to: phonebook_person_path(@conn, :delete, @phonebook.id, person.id), method: "delete", data: [confirm: "Are you sure?"], class: "btn btn-danger" do %><i class="material-icons icon-button">close</i><% end %>

1 Ответ

0 голосов
/ 13 октября 2018

Вы можете снова передать номер страницы в шаблоне:

<%= button to: phonebook_path(@conn, :delete, phonebook.id, person.id, page: @conn.params["page"]) %>

и затем распространить его обратно на ваше действие show в delete:

conn
|> put_flash(:info, "Contact deleted successfully")
|> redirect(to: phonebook_path(conn, :show, phonebook, page: conn.params["page"]))
...