Elixir Phoenix LiveView表单_用于在POST上引发NOROUTERROR

Elixir Phoenix LiveView表单_用于在POST上引发NOROUTERROR,elixir,phoenix-framework,phoenix,phoenix-live-view,Elixir,Phoenix Framework,Phoenix,Phoenix Live View,因此,我正在尝试制作一个phoenix live view应用程序,当我试图将它实现到我已经存在的项目中时,遇到了一个问题。我使用phoenix.html提供的表单_制作了一个表单,它在我的live套接字上向服务器发出post请求。这不应该发生,我不认为,因为我成功地做了演示,它允许我张贴到现场查看。以下是错误: [debug] ** (Phoenix.Router.NoRouteError) no route found for POST /test_live/1 (OkayfivePhxWe

因此,我正在尝试制作一个phoenix live view应用程序,当我试图将它实现到我已经存在的项目中时,遇到了一个问题。我使用phoenix.html提供的表单_制作了一个表单,它在我的live套接字上向服务器发出post请求。这不应该发生,我不认为,因为我成功地做了演示,它允许我张贴到现场查看。以下是错误:

[debug] ** (Phoenix.Router.NoRouteError) no route found for POST /test_live/1 (OkayfivePhxWeb.Router)
(okayfive_phx 0.1.0) lib/phoenix/router.ex:330: OkayfivePhxWeb.Router.call/2
(okayfive_phx 0.1.0) lib/okayfive_phx_web/endpoint.ex:1: OkayfivePhxWeb.Endpoint.plug_builder_call/2
(okayfive_phx 0.1.0) lib/plug/debugger.ex:130: OkayfivePhxWeb.Endpoint."call (overridable 3)"/2
(okayfive_phx 0.1.0) lib/okayfive_phx_web/endpoint.ex:1: OkayfivePhxWeb.Endpoint.call/2
(phoenix 1.4.16) lib/phoenix/endpoint/cowboy2_handler.ex:42: Phoenix.Endpoint.Cowboy2Handler.init/4
(cowboy 2.7.0) /mnt/c/Users/oriont/dev/okayfive_phx/deps/cowboy/src/cowboy_handler.erl:41: :cowboy_handler.execute/2
(cowboy 2.7.0) /mnt/c/Users/oriont/dev/okayfive_phx/deps/cowboy/src/cowboy_stream_h.erl:320: :cowboy_stream_h.execute/3
(cowboy 2.7.0) /mnt/c/Users/oriont/dev/okayfive_phx/deps/cowboy/src/cowboy_stream_h.erl:302: :cowboy_stream_h.request_process/3
(stdlib 3.11.2) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
这是现场控制器:(test_live.ex)

下面是test.html.leex:

<%= f = form_for @changeset, "#", [phx_submit: :save, phx_hook: "SavedForm"] %>

  <%= label f, :answer %>
  <%= text_input f, :answer, phx_debounce: "blur" %>
  <%= error_tag f, :answer %>

  <div>
    <%= submit "Save", phx_disable_with: "Saving..." %>
  </div>
</form>

感谢您的帮助。谢谢

我真的明白了,现在我觉得自己很愚蠢。原因是我没有在liveview渲染中使用布局,这意味着:

<%= @inner_content %>

确保这在您的布局中,并且布局确实有效


如果没有,您的表单将发出post请求,而不是通过web套接字。

您可以显示mix.ex文件吗?它最终与mix.ex文件无关。不过,谢谢你的关心!很遗憾你不得不这么说。我问这个问题的原因是:是的,我确实缺乏对live view的基本理解,这是因为这是我第一次使用它。如果你的评论没有帮助和/或居高临下,请不要发表。我忘记添加的另一件事是,我使用的是
模板,因此请确保将布局中的这一行替换为@internal\u内容行。我遇到了这个问题,但这个解决方案对我不起作用。我已经验证了我是用elixir 1.10.4和erlang 22.3.1从一个新的phx.gen.live混合版本中获得它的。我的布局实际上很有效,并使用@internal_content.:悲伤的脸:我明白了。我需要遵循文档的这一部分,也不要忘了标题部分——一天中有将近30分钟的时间试图解决这个问题——感谢您的解决方案。
<form phx-change="validate" phx-submit="save">
  <input type="text" name="user[email]" phx-debounce="blur"/>
  <input type="text" name="user[username]" phx-debounce="2000"/>
  <input type="submit" value="Submit">
</form>
pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_live_flash
    plug :protect_from_forgery
    plug :put_secure_browser_headers
  end

scope "/", OkayfivePhxWeb do
    pipe_through :browser
...
    live "/test_live/:id", TestLive
...

  end
<%= @inner_content %>