1

ユーザーが私のページのボタンを押すと、AJAXリクエストを介して呼び出される次のメソッドがあります。

def savings_easter_egg
  @savings = params[:savings] if params[:savings]
  return render :partial => "topics/savings", :locals => { :savings => @savings }    
end

このメソッドが、JqueryUIのモーダルで表示できるパーシャルを返すようにします。

   $.ajax({
      type: 'GET',
      url: '/topics/savings_easter_egg',
      data: {
        savings: data[key]['saving']
      } ,

      success: function(response) {
        $(response).dialog({
          height: 840,
           modal: true,
         });              
      }
    });

上に示したように、コントローラーからの応答を使用してダイアログを生成しようとしていますが、これについてはよくわかりません。ドキュメントは私を少し混乱させます:http://jqueryui.com/dialog/#modal

トピック/_savings_easter_egg.slim

#dialog-modal
  p Hi
  = params[:savings]
  = @savings

これは、私が渡してモーダルに表示したい部分です。今、私はどのようにモーダルトスを取得していますが、それはテキストのない細い白い線です。私は何が間違っているのですか?

4

1 に答える 1

1

jQuery UIダイアログは、ダイアログの作成時にすでに存在しているDOM要素に基づいています。ダイアログは、ページのDOM構造の一部であるDIVなどのコンテンツを表示しているだけです。

パーシャルをダイアログに表示する場合は、最初にそれをページに挿入する必要があります。たとえば、既存の要素のコンテンツをそれで置き換えます。

jQuery("#your_container").html(YOUR RENDERED PARTIAL)

または既存のコンテナを置き換える(例のようにパーシャルに追加のコンテナ要素がある場合)

jQuery("#your_container").replaceWith(YOUR RENDERED PARTIAL)

その後、このコンテナ要素のダイアログを作成できるようになります

jQuery("#your_container").dialog()

編集:動的コンテンツも使用できると思います。たとえば、

jQuery("<p>Hello World</p>").dialog()

しかし、ダイアログが同じように反応するかどうかはわかりません。私は通常、ページで1つのダイアログ要素を使用しており、そのコンテンツを現在必要なものに置き換えています。

于 2012-11-10T08:06:49.703 に答える