Abb*_*ner 7 jquery ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
我有一个列出项目的页面.在每个项目下面,它列出了该项目的任何注释(注释是项目下的嵌套资源).
您可以在项目页面上添加新注释.当你这样做时,它正在重新加载整个页面,所以我想改变它以使用Ajax并只使用jQuery插入注释.
所以我将注释/ _form.html.erb改为使用:remote => true
<%= form_for([@item,@comment], :remote=>true) do |f| %>
Run Code Online (Sandbox Code Playgroud)
我在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
Run Code Online (Sandbox Code Playgroud)
并创建了一个简单的注释/ create.js.erb来将新注释插入页面:
$("#comments").append("<%= j(render(@comment)) %>");
Run Code Online (Sandbox Code Playgroud)
但是,当我提交注释时(即使表单上有:remote => true),它会不断重新加载整个页面/忽略我的.js文件.
所以我从respond_to中删除了format.html(因为我不想使用该选项),但是它给了我4ms内完成406不可接受的错误(ActiveRecord:0.2ms)
如何让它留在当前页面并使用我的create.js回复?
我刚刚发现问题:
我正在使用 javascript: 提交我的评论表this.form.submit()。当我不使用时,效果很好:remote=>true。然而,由于某种原因,当我制作表格时会中断:remote=>true。
如果我使用实际的提交按钮,我的问题中的代码可以正常工作。
或者,如果我将 JavaScript 从this.form.submit()使用 jQuery 更改为通过 id 选择表单并提交,这也有效:
$("#new_comment_<%= @item.id %>").submit();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9511 次 |
| 最近记录: |