很抱歉,如果这是一个愚蠢的问题,但我无法让它发挥作用。我想在对话框面板中获取一个表单。表单是AJAX请求的结果,生成的js.erb文件如下所示:
$(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
}
);
});
我知道表单语法没问题,因为它在对话框之外工作。我假设它没有被正确地逃脱?提前谢谢!
更新:我正如Ben Simpson正确指出的那样删除了$(function(){}包装器。但是,我仍然没有在使用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
}
);
但是,如果我只是放入rails渲染它的形式。即:
$('#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 :(得分:0)
您的响应包含在“$(function(){}”闭包中,这是用于绑定到DOM:loaded事件的jQuery简写。这已经在页面加载时被触发。
删除此行,您的功能应自动评估。
只要MIME类型是text / javascript,就应该自动评估AJAX响应中的Javascript。有关jQuery AJAX响应的更多信息,请访问:http://api.jquery.com/jQuery.ajax/