2011-12-07 25 views
1

對不起,如果這是一個愚蠢的問題,但我不能得到它的工作。我正在嘗試在對話框中獲取表單。形式是一個AJAX請求的結果,所得js.erb文件看起來像:使用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 

     }  
); 
}); 

我知道形式的語法是好的,因爲它的工作原理對話外。我假設它沒有被正確轉義?提前致謝!

更新:我刪除了$(函數(){}包裝本·辛普森正確地指出,但是,我還是什麼也沒得到我的面板使用ERB呈現以下是我現在有:。

$('#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 

    }  
); 

但如果我只是把在軌道使得它的形式工作即:

$('#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

你的反應是內包裝「$(函數(){}」關閉,這是jQuery的縮寫結合到DOM :加載的事件,當頁面已經加載時,這個事件已經被觸發了。

刪除此行,您的函數應該自動評估。

只要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(render:partial =>「form」)' –

+0

是的!這解決了它! –