چطور در فونیکس به همراه ریدایرکت سشن را نیز ارسال کنم؟

درود خدمت شما . من یک Fallback دارم که وقتی اروری رو دریافت کردم به صفحه ای نیازمندم می فرستم به صورت مثال وقتی که ارور ۴۰۴ دریافت کردم

def call(conn, {:ok, %HTTPoison.Response{status_code: 404, body: _body}}) do
      conn
      |> put_flash(:info, "متاسفانه صفحه ای که به دنبال آن هستید وجود ندارد.")
      |> redirect( to: "/404")
    end

همانطور که می بینید بنده سعی کردم یک put_flash درست کنم و همراه ریدایرکت بفرستم و در صفحه ۴۰۴ ارورم که به شرح زیر هست نمایش بدم

<!-- /web/templates/error/404.html.eex -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>403 - Page Not Found</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
  </head>

  <body>
   <%= if Phoenix.Controller.get_flash(@conn, :info) do %>
    <div class="clearfix"> </div>
    <div class="speacer40"></div>
      <div class="alert alert-warning alert-dismissible fade show container rtl-m" role="alert">
        <%= Phoenix.Controller.get_flash(@conn, :info) %>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
    <% end %>
    <h1>403 - Page Not Found</h1>
    <p>This isn't the page you were looking for.</p>
  </body>
</html>

ولی متاسفانه انگار اصلا سنشن ارسال نمی شه که من بتونم بگیرمش و ارور

** (exit) an exception was raised:
    ** (ArgumentError) flash not fetched, call fetch_flash/2
        (phoenix) lib/phoenix/controller.ex:1236: Phoenix.Controller.get_flash/1
        (phoenix) lib/phoenix/controller.ex:1250: Phoenix.Controller.get_flash/2

دارم

من از فونیکس چیزی نمی دونم اما خوب کوکی یا JWT اینجا می تونه خیلی کمک کنه بهت

1 پسندیده

متاسفانه سمیر جان چون اینجا فقط یک تمپلیت هست و کنترلر نداره اون اصل دستورات من اجرا نمی شه که حتی بتونم کوکی که درست کردم یا سشنی که درست شده رو بتونم بگیرم . یعنی اصل مشکلم اینجاست

دوستان من اومدم در view خودم برای گرفتن سشن use TrangellHtmlSiteWeb, :controller اد کردم مشکلم حل شد. تونستم سشن رو در ۴۰۴.html بگیرم به نظرتون کارم درست است؟

مثل اینکه توهم زدم درست نشد :expressionless: چون این صفحه اصلا جزو روتر نیست بخاطر همین اصلا توش سشن یا کوکی رو نمی گیره

راه حل جدیدی به صورت اتفاقی براش پیدا کردم به زودی یک مقاله در موردش می نویسم . خیلی ساده هست

بجای اینکه بفرستمش در یک روتری که وجود نداره صفحه ۴۰۴ رو در همون تمپلیت رندر می کنم