我有一个列出项目的页面。在每个项目下方,它列出了该项目的所有评论(评论是项目下的嵌套资源)。
您可以在项目页面上在线添加新评论。当您这样做时,它正在重新加载整个页面,因此我想将其更改为使用 Ajax 并仅使用 jQuery 插入评论。
所以我改变了我的评论/_form.html.erb 使用 :remote=>true
<%= form_for([@item,@comment], :remote=>true) do |f| %>
我在 comments_controller 中添加了 format.js:
def create
@comment = Comment.new(params[:comment])
@comment.save
respond_to do |format|
format.js
format.html { redirect_to items_path}
end
end
并创建了一个简单的 comments/create.js.erb 来将新的评论插入页面:
$("#comments").append("<%= j(render(@comment)) %>");
但是,当我提交评论时(即使在表单上使用 :remote=>true),它也会不断重新加载整个页面/忽略我的 .js 文件。
所以我从 respond_to 中删除了 format.html(因为我不想使用那个选项),但是它给了我错误Completed 406 Not Acceptable in 4ms (ActiveRecord: 0.2ms)
我怎样才能让它留在当前页面上并用我的 create.js 响应?