我正在尝试在 Rails 3.1 项目中创建内联编辑。我正在创建表单以通过 ajax 编辑副本,然后尝试通过 ajax 发送编辑。
但是表单不想绑定(bind)并且表单不会提交通过 ajax 创建的表单。
现在有人知道如何在表单创建后绑定(bind)
我使用 edit.js.erb 添加表单:
$("#nutri_<%= @nutritioninfo.id %>").after('<%= escape_javascript(render(:partial=>'admin/products/nutrition_edit', :locals=>{:nutritioninfo=>@nutritioninfo}))%>');
部分是这样的:
$%tr.hidden.edit-nutri{ :class => cycle('odd', 'even', :name => "nutrition-hidden-rows"), :id=>"nutri_edit_#{nutritioninfo.id}" }
= simple_form_for [:admin,site,product,nutritioninfo], :remote=>true do |f|
%td
%td= f.input :title,:label => false
%td= f.input :parent_id, :as=>:select, :collection=>nutritioninfo.possible_parents,:label => false
%td= f.input :per100g, :label => false
%td= f.input :info, :label => false
%td= f.input :highlight,:as=>:boolean, :label => false
%td.edit= f.button :submit, t('admin.general.save').humanize
%td.remove=link_to t('admin.general.cancel').humanize, "#", :remote => true, :class=>"cancel-toggle"
有人知道如何绑定(bind)表单吗?
最佳答案
可能没有什么问题。
首先,可能很明显,但您是否需要在 application.js 中使用 jquery_ujs?如果您没有对 remote: true 进行任何操作,则可能是原因。
其次,它甚至会触发表单提交吗?请记住,在使用 ajax 时,您必须使用“live()”而不是“bind()”或“action()”,因为每次重新加载表单时 live 都会对元素进行绑定(bind)(“bind”仅绑定(bind)一次操作)。
但是如果继续提交,而您没有任何响应,那么您可能必须像 Andre Dublin 所说的那样在 Controller 中实现 xhr 请求。
关于 ajax 的 Rails 艺术你可以引用 Using Unobtrusive JS and AJAX with Rails 3也许你应该看看In place editing RailsCast ?
关于jquery - Rails 3.1 和 ajax 创建的表单不提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7665646/