Rails 3.2.9でbootstrap-sass 2.1.1.0を使用しています。モーダル内に ajax フォームがあります。このような:
section#avatars_form_edit
= simple_form_for [user, avatar], html: { class: 'edit-avatar' }, remote: true do |f|
- %w(x y w h).each do |attribute|
= f.hidden_field "crop_#{attribute}"
a.btn href='#' data-dismiss='modal' = t '.cancel'
= f.button :submit, value: t('.confirm')
送信が成功した後、モーダルを非表示にして、モーダルの下のページの要素を置き換えたい: (update.js.erb)
<% if @avatar.errors.any? %>
<% error = @avatar.errors[:image].first %>
$('#avatars_form').
find('.modal-body').prepend('<%= j render "shared/embedded_notify", key: "alert", msg: error %>');
<% else %>
$('#avatars_modal').modal('hide');
$('#avatars_avatar_medium').
replaceWith('<%= j render "avatar_medium", avatar: @avatar, user: @user %>');
$('#avatars_avatar_medium').
on('hover', function() { $(this).find('.edit-bar').toggleClass('invisible'); });
<% end %>
問題は:時々 (90% うまくいく)、replaceWith($('#avatars_avatar_medium'). replaceWith('<%= j render "avatar_medium", avatar: @avatar, user: @user %>'); ) 動作しないようです。マイページを更新しません。javasriptが苦手なのですが、教えていただけますか?ありがとう!