使用jQuery在Rails中使用另一个控制器在页面上呈现部分表单

时间:2011-12-21 08:28:11

标签: jquery ruby-on-rails-3

在我的主页上,我有一个提交给搜索控制器的搜索表单。在同一页面上,我有另一种表单,用于注册提交给资源控制器的新资源。资源表单呈现为部分,部分内部具有form_for标记。如果验证成功,一切正常,但是当它没有,并且表单是用jQuery重新渲染时,资源表单上的提交按钮不再提交给资源控制器,而是提交给搜索控制器。这是因为在最初呈现页面时加载DOM时会设置form_for属性吗?有没有办法让这项工作?是否有类似.live() - 函数可以在这种情况下使用?

以下是最初在search / index.html.erb文件中呈现部分的方式:

<div id="new_resource_form" style="display:block">
  <%= render "resources/resource_form" %>
</div>

这是resource_form partial的form_for部分:

<%= form_for @resource, :url => {:controller => 'resources', :id => @resource.id }, :remote => true do |f| %>

用于重新呈现部分的jQuery是这样的:

$('#new_resource_form').html('<%= escape_javascript raw render 'resources/resource_form' %>')

1 个答案:

答案 0 :(得分:0)

当您单击提交按钮时,单击事件会冒泡,直到它到达周围的表单并且表单提交 - 提交按钮实际上并不“指向”任何内容。所以听起来好像你遇到的问题是当表单重新渲染时,html将提交按钮放在资源表单之外和搜索表单中。您的模板html中是否存在浏览器尝试修复的错误?