2011-12-07 5 views
1

申し訳ありませんが、これは愚かな質問ですが、これを動作させることはできません。ダイアログパネル内でフォームを取得しようとしています。私はそれがダイアログ外で動作するため、フォームの構文はokです知っているRails/ERBを使用してJquery UIダイアログパネル内にフォームを作成

$(function() { 
$('#add_tag').html(
    "<fieldset>" 
    "<%= escape_javascript(form_tag(save_tag_path(:id=>@recipe.id), :remote=>true) do) %>" + 
    " <%= escape_javascript(label_tag(:new_tags, 'Your tags separated by commas')) %>" + 
    " <%= escape_javascript(text_field_tag :new_tags) %>" + 
    " <%= escape_javascript(submit_tag :submit) %>" + 
    "<% end %>" + 
    "</fieldset>" 
); 

$('#add_tag').dialog({ 
     title: "Add Tags", 
     height: 300, 
     width: 350, 
     modal: true 

     }  
); 
}); 

:フォームは、AJAX要求し、得られjs.erbファイルの結果は次のようになります。私はそれが適切にエスケープされていない何かを仮定している?前もって感謝します!

UPDATE:。。

$('#add_tag').html(
"<fieldset>" 
+ "<%= form_tag(save_tag_path(:id=>@recipe.id), :remote=>true) do %>" 
+ " <%= escape_javascript(label_tag(:new_tags, 'Your tags separated by commas')) %>" 
+ " <%= text_field_tag :new_tags %>" 
+ " <%= submit_tag :submit %>" 
+ "<% end %>" 
+ "</fieldset>" 
); 
$('#add_tag').dialog({ 
    title: "Add Tags", 
    height: 300, 
    width: 350, 
    modal: true 

    }  
); 
:ベン・シンプソンが正しく指摘したようにしかし、私はまだ何もERBを使用して、私のパネルに描画されなかっ取得ここで私が今持っているものである私は$(関数(){}ラッパーを削除

しかし、私はちょうどそれが動作レンダリングレールの形で入れ場合、すなわち:。

$('#add_tag').html(
    "<fieldset>" 
    + '<form method="post" data-remote="true" action="/recipes/1/save_tag" accept-charset="UTF-8">' 
    + '<div style="margin: 0pt; padding: 0pt; display: inline;">' 
    + '</div>' 
    + '<label for="new_tags">Your tags separated by commas</label>' 
    + '<input id="new_tags" type="text" name="new_tags">' 
    + '<input type="submit" value="submit" name="commit">' 
    + '</form>' 
    + "</fieldset>"); 

答えて

0

あなたの応答はDOMへの結合のためのjQueryの速記である「$(関数(){}」の閉鎖、内部に包まれて:ロードされたイベント。これは、ページがロードされると既に起動されています。

この行を削除すると、関数が自動的に評価されます。

MIMEタイプがtext/javascriptである限り、AJAX応答内のJavascriptは自動的に評価される必要があります。 jQueryのAJAXレスポンスに関する詳細はこちらをご覧ください:http://api.jquery.com/jQuery.ajax/

+0

ああ、はい。私はDOMについて考えていませんでした。しかし、それを削除しても、私は何も得られません。しかし、フォームタグだけでerbコードを切り替えると、それは動作します。これまでの助けてくれてありがとう! –

+0

このAJAXレスポンスが読み込まれた後、Javascriptコンソールで$( 'add_tag')。html()を実行すると、HTMLが表示されますか?

タグが表示されますが、フォームは表示されない可能性があります。典型的には、RJSの内部でレンダリングされたフォームは、フォームをインラインにするのではなく、部分的に呼び出すことがわかりました。試してみてください 'escape_javascript(レンダリング:部分=> "フォーム")' –

+0

はい!それはそれを解決しました! –

関連する問題