В моем представлении show.html.haml у меня есть форма, в которой пользователь может изменить несколько настроек. Я только что обновился, чтобы использовать Rails UJS, и когда мои пользователи меняют раскрывающееся меню, они видят, как jquery shizzle делает свое дело.
Все, что я на самом деле сделал в файле 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
Как я уже сказал, первое действие работает, но после первого обновления происходит сбой. Мое действие по обновлению контроллера немного громоздко, но я убедился, что у меня есть формат.js. Я также попытался разместить response_to: js в верхней части моего контроллера.
Я делаю это неправильно или есть простое решение, которое я не вижу?