2012-04-18 4 views
0

ベースは'Agile Web Development with Rails, Third Edition'です。私はAjaxでカートを作成しましたが、Ajaxは機能しません。次のように私のコードは次のとおりです。AjaxはRails 3.1で動作しません

/store/index.html.erb

<%= form_tag({:action=>'add_to_cart', :id=>product}, :remote=>true) do %> 
<%= submit_tag "Add to Cart" %> 
<% end %> 

/layouts/store.html.erb

<head> 
... 
<%= javascript_include_tag :defults %> 
... 
</head> 

/コントローラ/ store_controller.rb

def add_to_cart 
... 
respond_to do |format| 
format.js 
end 
... 
end 

add_to_cart.js.rjsのRails 3.1

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

、ルビー1.9.3。

答えて

0

RJSはRailsの一部ではありません。追加のダウンロードは必要なく、jQueryを使用することができます。最後に.rjsを使用しないでください。 CoffeeScriptについて知っていれば、ここにもあります:あなたのファイル名を*.coffeeとすれば、完了です。また、*.coffee.erbという名前を付けてERbにファイルを前処理させることもできますが、この機能は単純に*.coffee -filesの場合でもデフォルトで許可されています。

UPD:

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

はなるはずです。

$("#cart").html("<%= j render(@cart) %>") 
+0

ありがとうございますが、ajaxは機能していません。 – user1340869

+0

どのようなエラーが発生しますか? – jdoe

+0

soundarさんのアドバイスによると、実行することができます。問題はあります。私はページ全体をリフレッシュしなければならず、次にカートを表示することができます。 – user1340869

0

JSテンプレートは

のRails 3にname.js.erbとして指名されて、私はあなたがしようとしていると仮定しましょうajax呼び出しで "cart" divを置き換え、jQueryを使用します。 add_to_cart.js.erbを次のコードで作成します。

$("#cart").replaceWith('<%=escape_javascript(render :partial => 'cart', :object=>@cart) %>'); 
+0

'escape_javascript'が':partial'と ':object'を受け入れるときからですか? :-)私は準備ができているアドバイスのファンではありません(ユーザーは少し考えてください)が、あなたは私の答えを更新したので、著者を誤解しているようです。 – jdoe

+0

これは私のコードでレンダリングが見逃されたタイプミスでした。私は私の答えを更新しました。 –

+0

soundarのアドバイスに基づいて、ajaxはまだ機能していません。ログショウ:開始されたPOST "/ store/add_to_cart/3" ...、StoreController#add_to_cartによる処理... HTML ...、完了406不可アクセシブル – user1340869

関連する問題