我目前正在尝试向rails应用程序添加一些ajax。当我尝试创建一个新帖子时,我遇到了这个错误。我知道帖子是被创建的,因为当我刷新页面时,帖子会出现在帖子列表中。
def create
@post = Post.new(post_params)
respond_to do |format|
if @post.save
format.html { redirect_to @post, notice: 'Post was successfully created.' }
format.json { render :show, status: :created, location: @post }
format.js
else
format.html { render :new }
format.json { render json: @post.errors, status: :unprocessable_entity }
format.js
end
end
end
<%= form_for(@post, remote: true) do |f| %>
<div class="modal fade" id="mynewpost" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Suggested Invite</h4>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal" id="mynewpost">Close</button>
<%= submit_tag "Create", class: "btn btn-primary" %>
</div>
</div>
alert("Post Created!!");
resources :posts
现在我希望在点击提交后,我会看到poste被创建!但我没有。我只是得到一个内部服务器错误。从这里我不知道该怎么办。请让我知道,如果有任何额外的信息,我可以提供。
看起来可能是语法错误
{ render :show, status: :created, location: @post }
从post中呈现json并用javascript控制逻辑会更简单。
render json: @post
然后在javascript中让听众了解表单的成功
$("form").on("ajax:complete", (xhr, status) ->
alert("Post was created!");
)
$("form").("ajax:error", (xhr, data, status) ->
"Handle errors here";
)