Ruby on rails Ajax可以';t在Rails 3.1中工作

Ruby on rails Ajax可以';t在Rails 3.1中工作,ruby-on-rails,ajax,shopping-cart,Ruby On Rails,Ajax,Shopping Cart,在此基础上,我用Ajax创建了一个购物车,但Ajax不适合我。我的代码如下: /store/index.html.erb: <%= form_tag({:action=>'add_to_cart', :id=>product}, :remote=>true ) do %> <%= submit_tag "Add to Cart" %> <% end %> <head> ... <%= javascript_include_

在此基础上,我用Ajax创建了一个购物车,但Ajax不适合我。我的代码如下:

/store/index.html.erb

<%= form_tag({:action=>'add_to_cart', :id=>product}, :remote=>true ) do %>
<%= submit_tag "Add to Cart" %>
<% end %>
<head>
...
<%= javascript_include_tag :defults %>
...
</head>
def add_to_cart
...
respond_to do |format|
format.js
end
...
end
将\u添加到\u cart.js.rjs

page.replace_html("cart",:partial => "cart", :object=>@cart)

Rails 3.1、Ruby 1.9.3。

RJS不再是Rails的一部分。您可以使用jQuery,而不需要任何额外的下载:只是不要在最后使用
.rjs
。如果你知道CoffeeScript,这里也有:命名你的文件
*。coffee
,你就完成了。您也可以将其命名为
*.coffee.erb
,以允许erb预处理您的文件,但默认情况下,即使是简单的
*.coffee
-文件,也允许使用此功能

UPD:

page.replace_html("cart",:partial => "cart", :object=>@cart)
应成为:

$("#cart").html("<%= j render(@cart) %>")
$(“#购物车”).html(“”)

js模板在Rails 3中命名为name.js.erb

假设您要替换ajax调用中的“cart”div,并且您有jQuery。 使用以下代码创建add_to_cart.js.erb

$("#cart").replaceWith('<%=escape_javascript(render :partial => 'cart', :object=>@cart) %>');
$(“#购物车”).replacetwith(“'cart',:object=>@cart)%>”;

escape\u javascript
接受
:partial
:object
?:-)开始我不喜欢现成的建议(用户应该考虑一下),但你似乎误导了作者,所以我更新了我的答案。这是我在代码中遗漏的一个输入错误。我已经更新了我的答案。根据soundar的建议,ajax仍然不起作用。日志显示:已开始为…发布“/store/add\u to\u cart/3”,StoreController处理#将#作为HTML添加到#购物车…,完成406不可接受谢谢soundar!根据您的代码,我修改了store.html.erb,将javascript_include_标记从“:defaults”更改为“application”。ajax可以运行。但有一个小问题,不能自动更新,我必须刷新整个页面。你能给我提个建议吗?谢谢!您是否通过ajax获得响应html?根据soundar的建议,它可以运行。但是有一个问题:我必须刷新整个页面,然后才能显示购物车。