【发布时间】:2015-09-09 20:07:28
【问题描述】:
我们希望使用我们的内容可编辑,利用生成的路由以及 router.ex 中的以下内容:
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :put_secure_browser_headers
end
pipeline :api do
plug :accepts, ["json"]
end
scope "/", TextEditor do
pipe_through :browser # Use the default browser stack
get "/", PageController, :index
resources "/posts", PostController
end
和控制器功能,即创建:
def create(conn, %{"post" => post_params}) do
changeset = Post.changeset(%Post{}, post_params)
case Repo.insert(changeset) do
{:ok, _post} ->
conn
|> put_flash(:info, "Post created successfully.")
|> redirect(to: post_path(conn, :index))
{:error, changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
但是我们不想使用生成的表单,然后我们尝试使用 div 和 jquery 方法 $.post 进行测试:
<div id="newPost" contenteditable="true">write here</div>
<div id="button" class="btn btn-primary">Save</div>
<script type="text/javascript">
$(document).ready(function(){
$("#button").click(function() {
var post = $("#newPost").html();
$.post( "/posts/post", { title: post })
.done(function() {
alert( "Data Loaded: " );
});
});
});
</script>
但是,我们没有收到警报或任何数据插入到我们的数据库中。 我们缺少什么?
编辑:在浏览器管道中,由于 csrf 令牌错误,我们删除了交叉伪造插件。
【问题讨论】:
-
您的控制台是否有任何错误?能否请您发布您的
browser管道? -
没有错误。在控制台中我们得到:
[info] POST /posts/post。我将浏览器管道添加到问题中。由于 csrf 令牌错误,我们删除了交叉伪造插件。 -
并不是说您应该将其作为解决方案,但是如果您删除
:put_secure_browser_headers,您能否检查它是否有效? -
我测试过,删除它不起作用。
-
我们也遇到了参数问题,这就是我们将“post”添加到“/posts/”(“/posts/post”)的原因。
标签: jquery ajax elixir phoenix-framework