1

Rails アプリでは、Twitter ブートストラップを使用しています。

以前はすべて正常に機能していましたが、突然モーダルが 2 回表示されるようになりました。何が起こっているのかわかりません..私のコードは以下のようなものです。

考案/登録/new.html.erb

<%= link_to "Terms of Service", terms_in_modal_path, {:class => "show-terms", :remote => true}

pages_controller

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

terms_in_modal.js.erb

$("#signup-modal").html('<%= escape_javascript render(:partial => "terms_in_modal") %>');
$('#show-terms').modal('show');

_terms_in_modal.html.erb

<div id="show-terms" class="modal hide fade in">
...
</div>

リンクをクリックすると、2 つのモーダルが表示され、出力 html は次のようになります。

<div id="signup-modal">
  <div id="show-terms" class="modal hide fade in" style="display: block; ">
    <div class="modal-header">
    ...
  </div>
</div>

<div class="modal-backdrop fade in"></div>
<div class="modal-backdrop fade in"></div>

<div id="show-terms" class="modal hide fade in" style="display: block; ">
    <div class="modal-header">
    ...
</div>

編集1

Heroku のステージング アプリでは、モーダルは正常に動作します。奇妙なことに、前回herokuをプッシュした後、モーダルとサインアップページに関連するものは何も編集していませんでした. 最近OSをMountain Lionに変えたので、OSの関係かもしれません。

編集2

「git push staging master」を実行して、モーダルが正常に動作するかどうか試してみましたが、正常に動作しています。非常に奇妙..

4

1 に答える 1

2

これは、ローカル環境で行われる可能性があります。これは、Herokuに必要なコンパイル済みアセットが、開発環境でRailsにオンザフライで含まれるアセットと競合しているためです。これを防ぐにはrm -rf public/assets、プリコンパイルされたアセットを削除する必要があります。Herokuにプッシュする前に、必ずそれらを再コンパイルする必要があります。

于 2012-08-01T12:51:33.153 に答える