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