2012-01-10 89 views
1

我想添加一些AJAX功能到我的Rails應用程序,但不知道從哪裏開始。AJAX與Rails 3

這裏是增加了一個項目給訂單的方法:

def add_item_to_order 
if session[:order_id].nil? 
    @order = Order.new #Don't create an order until there is an item to be added to it. 
    @order.account_id = session[:user_id] 
else 
    @order = Order.find(session[:order_id]) 
end 
item = Item.find(params[:id]) 
o_item = OrderItem.new 
o_item.item_id = item.id 
@order.order_items << o_item 
@order.total += item.sale_price 
@order.save 
session[:order_id] = @order.id 
redirect_to order_home_path 
end 

這是運行在用戶點擊:

<%= link_to item.name, add_item_to_order_path(item.id), :class => "fixed medium green button"%> 

誰能給我如何開始任何提示,所以該項目通過AJAX添加到訂單中?

回答

1

偉大的教程,自己做了這個:http://ruby.railstutorial.org/ruby-on-rails-tutorial-book第12章在Ajax上有一些東西。

重要組成部分,是設置的link_to paramater data-remotetrue

<%= link_to item.name, add_item_to_order_path(item.id), 
    :class => "fixed medium green button" data-remote="true" method="post"%> 

並在控制器添加

def add_item_to_order 
    # other stuff 
    # at the bottom: 
    respond_to do |format| 
      format.html { redirect_to order_home_path } 
      format.js 
     end 

end 

然後你需要一個.js.erb文件來處理format.js repsonse:

$("your_form").update("<%= escape_javascript(render('partial_page')) %>") 

和部分頁面文件以保存新的數據..

+0

在.js.erb文件中,什麼將代替「your_form」?按鈕的類? – 2012-01-10 12:34:53

+0

「your_form」是您在主html文件中使用的div的ID,用於顯示您希望由ajax請求更新的信息。可能是您希望更改文字的按鈕或顯示新信息的標籤.. – Pete 2012-01-10 12:40:55

+0

您提供的鏈接僅由11個章節組成:P – 2014-06-24 07:15:07

2
  1. 檢查如何render javascript。在正常的請求中,您可以重定向到某個動作或者渲染一些視圖等,對於XHRXmlHttpRequest),您可以通過將呈現的服務器端js模板來使用render javascript。您將不得不使用爲Rails-3提供的LegacyPrototypeHelpers,因爲最初的幫助器只能正式用於Rails-2。

  2. 更好的方法(不像Rails 3那樣引人注目)只會從服務器發送一些數據。在下面的例子中,你有上面我猜如果你通過JSON對象或其他格式發送item.id,然後在成功回調的地方讀取它,從你做出XMLHttpRequest的地方,然後獲得item.id後,你可以創建link_to創建的HTML,然後將其附加到DOM。