我正在寻找一个非常简单的基本工作岗位回复示例。应用程序只需要有两个路由/控制器。第一个是包含HTML表单的主页,另一个是嵌入式表单的响应。
令人惊讶的是,所有在线类似代码的例子都是完全臃肿的(恕我直言),其代码我不明白。
就目前而言,我得到的错误是要求一个CSRF令牌(是的,我知道那是什么)。在我在线查看的一些代码中,表单有一行看起来像这样生成它:
<input type="hidden" name="csrf_token" value="<%= csrf_token(@conn) %>">
当我将上面的行添加到我的表单时,我收到一条错误,指出csrf_token()函数未定义。
到目前为止,我所拥有的是:
HTML
<form action="/create" method="post">
<input type="text" name="todo">
<input type="submit">
</form>
路由器
scope "/", ProjWeb do
pipe_through :browser # Use the default browser stack
get "/", PageController, :index
post "/create", TodoController, :new
end
的PageController
defmodule ProjWeb.PageController do
use ProjWeb, :controller
def index(conn, _params) do
render conn, "index.html"
end
end
TodoController
defmodule ProjWeb.TodoController do
use ProjWeb, :controller
def new(conn, _params) do
render conn, "index.html"
end
end
如何使用我目前的代码使帖子请求正常工作?
谢谢
答案 0 :(得分:3)
在%= Plug.CSRFProtection.get_csrf_token()
字段中添加此value
并尝试。