我的 Rails 及 Ruby 的版本如下,使用的是 ubuntu 11.10
Rails --version: Rails 3.2.6
Ruby --version: ruby 1.9.3p194
最近在看《Web 开发敏捷之道》第四版,看到 Task F: Add a Dash of Ajax
时有些困惑,书上说要用 create.js,rjs,可是我搜到@Rei的这篇 blog http://chloerei.com/2012/04/21/rails-3-2-ajax-guide/ ,说是这种方式已经在 3.1 以后被移除了,然后我使用 Rei 的方法
app/views/store/index.html.erb:
<%= button_to 'Add to Cart', line_items_path(:product_id => product), :remote => true %>
然后在 app/controllers/line_items_controller.rb 中:
def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id)
respond_to do |format|
if @line_item.save
format.html { redirect_to(store_url) }
format.json { render json: @line_item, status: :created, location: @line_item }
else
format.html { render action: "new" }
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
在我加了:remote => true 这个参数后,每点一次 Add to Cart 后,增加的数量是 2,不是 1,难道是我这个参数的位置放错了?还有,每次 Add to Cart 后,都要手动刷新一下,才会显示侧边栏 Cart 的更新,而不是它自己更新。 最后,我去看了下这本书的源码,书本作者在 3.2 下用的是在app/views/line_items/文件夹下增加一个 create.js.erb(书本上是用.rjs)。 我困惑了,我是该按照书本的方式,还是按照@Rei的方法,在 Rails 下使用 Ajax,若是按照 Rei 的方法,我又该怎么写? 纯新手,求指导~~