【发布时间】:2013-01-03 19:18:11
【问题描述】:
我有一个列出项目的页面。在每个项目下方,它列出了该项目的所有 cmets (cmets 是 items 下的嵌套资源)。
您可以在项目页面上添加新的内嵌评论。当你这样做时,它正在重新加载整个页面,所以我想将其更改为使用 Ajax 并仅使用 jQuery 插入评论。
所以我将我的 cmets/_form.html.erb 更改为使用 :remote=>true
<%= form_for([@item,@comment], :remote=>true) do |f| %>
我在我的 cmets_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
并创建了一个简单的 cmets/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 响应?
【问题讨论】:
-
您是否在页面上正确包含
jquery和jquery_ujs脚本? -
<%= form_for([@item,@comment], :remote=> true) do |f| %>(TRUE 不应作为符号传递) -
dogbert - 我相信是这样,因为我有 ajax w/jquery 在这个应用程序的其他地方工作得很好。
-
Yoshiji 先生 - 哎呀,谢谢!我的代码是正确的,我的帖子是错误的 - 我刚刚修复了它。
标签: ruby-on-rails ruby-on-rails-3 jquery ruby-on-rails-3.2