私のshow.html.hamlビューには、ユーザーがいくつかの設定を変更できるフォームがあります。Rails UJSを使用するように更新しました。ユーザーがドロップダウンメニューを変更すると、jqueryshizzleがそれを実行しているのがわかります。
show.jsファイルで実際に行ったのは、フォームが置かれている部分を更新し、エラーメッセージをフラッシュすることだけです。
問題は、一度更新されると、jqueryドロップダウン選択が機能しないことです。これは、update.jsビューをレンダリングしているためだと思いました。したがって、このファイルを含めました。ただし、それでも何も起こらず、ログにエラーは表示されません。
show.html.hamlに私は(簡略化して)持っています:
#show_form
= render "show"
私のショーの部分には次のものが含まれています:
= semantic_form_for @product_order, :remote => true do |f|
= f.select :shipping_method, options_for_select(ProductOrder::Couriers, :selected => @product_order.shipping_method)
私のshow.js.erbとupdate.js.erbには次のものが含まれています。
$("#show_form").html("<%= escape_javascript(render("show")) %>");
$("#status_banner").effect("highlight", {}, 3000);
$("#status_banner").html("<h2>ORDER STATUS: <%= (@product_order.state.titlecase) %></h2>");
$("#status_banner").removeClass("alert").addClass("alert <%= (@product_class) %>");
私のproduct_order.js.coffeeには、次のものがあります。
jQuery ->
$("#dropdown_select").change ->
$(this).closest("form").submit()
$(this).serialize()
null
"script"
false
私が言ったように、最初のアクションは機能しますが、最初の更新後に失敗します。私のコントローラーの更新アクションは少しかさばりますが、format.jsが含まれていることを確認しました。また、コントローラーの上部にrespond_to:jsを配置してみました。
私はこれを間違ってやっていますか、それとも私が見ることができない簡単な修正がありますか?