How to edit controller's Variables in view before loading in template

Thank you , I am reading the all of the documents which I have found for 3 days, but I have not been able to fix this.

I understand

I fix this and change it to a list like this in controller:

def index(conn, _params) do

    breadcrumb = [
      %{
        title: "کامپوننت آسان پرداخت",
        link: "طراحی سایت و بهینه سازی",
      }
    ]
    render(conn, "index.html", breadcrumb: breadcrumb)
  end

after changing the cod to a list , it doesn’t work and passes same error

[error] #PID<0.423.0> running TrangellHtmlSiteWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:9991 (http)
Request: GET /blog
** (exit) an exception was raised:
    ** (Protocol.UndefinedError) protocol Phoenix.HTML.Safe not implemented for %{breadcrumb: [%{link: "breadcrumb", title: "new"}, %{link: "طراحی سایت و بهینه سازی", title: "کامپوننت آسان پرداخت"}], conn: %Plug.Conn{adapter: {Plug.Adapters.Cowboy.Conn, :...}, assigns: %{breadcrumb: [%{link: "طراحی سایت و بهینه سازی", title: "کامپوننت آسان پرداخت"}], layout: {TrangellHtmlSiteWeb.LayoutView, "app.html"}}, before_send: [#Function<0.130566154/1 in Plug.CSRFProtection.call/2>, #Function<4.72544617/1 in Phoenix.Controller.fetch_flash/2>, #Function<0.45862765/1 in Plug.Session.before_send/2>, #Function<1.122369158/1 in Plug.Logger.call/2>, #Function<0.9464484/1 in Phoenix.LiveReloader.before_send_inject_reloader/2>], body_params: %{}, cookies: %{}, halted: false, host: "localhost", method: "GET", owner: #PID<0.423.0>, params: %{}, path_info: ["blog"], path_params: %{}, port: 9991, private: %{TrangellHtmlSiteWeb.Router => {[], %{}}, :phoenix_action => :index, :phoenix_controller => TrangellHtmlSiteWeb.BlogController, :phoenix_endpoint => TrangellHtmlSiteWeb.Endpoint, :phoenix_flash => %{}, :phoenix_format => "html", :phoenix_layout => {TrangellHtmlSiteWeb.LayoutView, :app}, :phoenix_pipelines => [:browser], :phoenix_router => TrangellHtmlSiteWeb.Router, :phoenix_template => "index.html", :phoenix_view => TrangellHtmlSiteWeb.BlogView, :plug_session => %{}, :plug_session_fetch => :done}, query_params: %{}, query_string: "", remote_ip: {127, 0, 0, 1}, req_cookies: %{}, req_headers: [{"host", "localhost:9991"}, {"connection", "keep-alive"}, {"cache-control", "max-age=0"}, {"upgrade-insecure-requests", "1"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"}, {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"}, {"referer", "http://localhost:9991/blog"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9,fa;q=0.8,es;q=0.7"}], request_path: "/blog", resp_body: nil, resp_cookies: %{}, resp_headers: [{"cache-control", "max-age=0, private, must-revalidate"}, {"x-frame-options", "SAMEORIGIN"}, {"x-xss-protection", "1; mode=block"}, {"x-content-type-options", "nosniff"}, {"x-download-options", "noopen"}, {"x-permitted-cross-domain-policies", "none"}], scheme: :http, script_name: [], secret_key_base: "dvb4hlpswTog8giDVaUB45YFIJgvkfEG47TjgBOtSiahPUPTycPCpSbSRjhlmsUp", state: :unset, status: nil}, view_module: TrangellHtmlSiteWeb.BlogView, view_template: "index.html"}. This protocol is implemented for: Atom, BitString, Date, DateTime, Float, Integer, List, NaiveDateTime, Time, Tuple
        (phoenix_html) /Applications/MAMP/htdocs/elixir-ex-source/Trangell_Main/trangell_html_site_umbrella/deps/phoenix_html/lib/phoenix_html/safe.ex:1: Phoenix.HTML.Safe.impl_for!/1
        (phoenix_html) /Applications/MAMP/htdocs/elixir-ex-source/Trangell_Main/trangell_html_site_umbrella/deps/phoenix_html/lib/phoenix_html/safe.ex:15: Phoenix.HTML.Safe.to_iodata/1
        (trangell_html_site_web) lib/trangell_html_site_web/templates/layout/app.html.eex:24: TrangellHtmlSiteWeb.LayoutView."app.html"/1
        (phoenix) lib/phoenix/view.ex:332: Phoenix.View.render_to_iodata/3
        (phoenix) lib/phoenix/controller.ex:740: Phoenix.Controller.do_render/4
        (trangell_html_site_web) lib/trangell_html_site_web/controllers/blog_controller.ex:1: TrangellHtmlSiteWeb.BlogController.action/2
        (trangell_html_site_web) lib/trangell_html_site_web/controllers/blog_controller.ex:1: TrangellHtmlSiteWeb.BlogController.phoenix_controller_pipeline/2
        (trangell_html_site_web) lib/trangell_html_site_web/endpoint.ex:1: TrangellHtmlSiteWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (trangell_html_site_web) lib/trangell_html_site_web/endpoint.ex:1: TrangellHtmlSiteWeb.Endpoint.plug_builder_call/2
        (trangell_html_site_web) lib/plug/debugger.ex:122: TrangellHtmlSiteWeb.Endpoint."call (overridable 3)"/2
        (trangell_html_site_web) lib/trangell_html_site_web/endpoint.ex:1: TrangellHtmlSiteWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) /Applications/MAMP/htdocs/elixir-ex-source/Trangell_Main/trangell_html_site_umbrella/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

If I use this code, my code will go to a big loop and my ram will go to high

def render("index.html", assigns = %{breadcrumb: old_bc}) do
  render(__MODULE__, "index.html", %{assigns | breadcrumb: [%{title: "new", link: "breadcrumb"} | old_bc]})
end

Im forced to stop and start again my terminal or phx server