1

ユーザーがラジオボタンをクリックしたときに、パーシャルの内容でdivを更新したい。これで、そのパーシャルのコンテンツは静的htmlになります(フォームは静的である可能性があります)。したがって、サーバーからフェッチするデータがないため、その部分をフェッチしてdivを更新するためだけにサーバーにajax呼び出しを行うのは気が進まない。これが私が試したことです。

 function loadControlPanel(type)
      {
        alert(type);
        $(controlPanelDiv).appendChild("<%=  render :partial => 'layouts/agency_selection' %>");
      }


<input type="radio" name="view" value="agencies" onClick ="loadControlPanel(this.value)" /> Agencies

ただし、レンダリングによって部分全体が新しい行とともに置き換えられ、JavaScriptエラーが。にスローされるため、これは機能しませんfunction loadControlPanel(type)

これを克服する方法はありますか?または他のより簡単な解決策?

ありがとうShaunak

4

2 に答える 2

1

レイアウトの静的部分を非表示のdivにレンダリングしてから、そのIDのクローンを作成し、javascrtiptを使用してinnerHTMLに配置しないのはなぜですか?

ちなみに、「render:partial」を呼び出すだけでは、Ajax呼び出しを意味するわけではありません。

于 2011-05-17T03:02:00.450 に答える
0

OKayは、これを回避するために私が見つけた回避策です。レンダリングで「gsub」を呼び出して、改行を何も置き換えません。しかし、私はまだもっとエレガントな解決策を受け入れています。

function loadControlPanel(type)
      {
        alert(type);
        $(controlPanelDiv).innerHTML = '<%=  (render :partial => "layouts/agency_selection").gsub("\n","") %>';
      }
于 2011-05-17T00:51:58.030 に答える