2012-01-10 21 views
1

私はRailsアプリケーションにいくつかのAJAX機能を追加したいと思っていますが、どこから起動するのかはわかりません。AJAX with 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 item.name, add_item_to_order_path(item.id), 
    :class => "fixed medium green button" data-remote="true" method="post"%> 

とあなたのコントローラであなたは次にあなたが処理するために.js.erbファイルが必要になります

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 

を追加:data-remotetrueへのparamater

重要な部分は、あなたのlink_toを設定することですformat.js repsonse:

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

と部分ページファイル

+0

.js.erbファイルでは、 "your_form"の代わりに何がありますか?ボタンのクラス? –

+0

"your_form"は、メインのhtmlファイルで、ajaxリクエストで更新したい情報を表示するために使用したdivのIDです。テキストを変更したいボタン、または新しい情報を表示するラベルにすることができます。 – Pete

+0

あなたが提供しているリンクは11章しかありません。:P –

2
  1. render javascriptをオンにしてください。通常のリクエストでは、XHRXmlHttpRequest)の場合、レンダリングされるサーバー側のjsテンプレートを使用してrender javascriptを実行することができます。元のヘルパーは正式にRails-2にしか利用できなかったので、Rails-3にはLegacyPrototypeHelpersを使用する必要があります。

  2. より良いアプローチ(Rails 3が好むほど目立たない)は、サーバーからデータを送信することです。次の例では、item.idをJSONオブジェクトやその他の形式で送信し、XMLHttpRequestを作成した場所から成功したコールバックでそれを読み取った後、item.idを取得した後に読み取ったとしますlink_toが作成したHTMLを作成し、それをDOMに追加します。