使用Rails / ERB在Jquery UI对话框面板中创建表单

时间:2011-12-07 00:01:27

标签: jquery ruby-on-rails erb

很抱歉,如果这是一个愚蠢的问题,但我无法让它发挥作用。我想在对话框面板中获取一个表单。表单是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>");

1 个答案:

答案 0 :(得分:0)

您的响应包含在“$(function(){}”闭包中,这是用于绑定到DOM:loaded事件的jQuery简写。这已经在页面加载时被触发。

删除此行,您的功能应自动评估。

只要MIME类型是text / javascript,就应该自动评估AJAX响应中的Javascript。有关jQuery AJAX响应的更多信息,请访问:http://api.jquery.com/jQuery.ajax/