Rails:部分中的远程表单:工作一次,而不是两次

我在最后几天遇到了一个问题。 我想使用远程表单更新对象。 我第一次提交表单时基本上可以更新我的对象,但第二次不起作用。

所以,我有一个偏远的forms。

视图/任务/ _table_form.haml.erb

%tr{:class => "tr_mission_#{mission.id} tr_mission"} = form_for(mission, :url => mission_path(mission), :html => { :remote => true , :method=> :put, :format => :js, :multipart => true, :class => "my_remote_form" }) do |f| = f.text_area :description, :size => "220x6", :class => "fill_data" = f.submit 'Update', :class => "btn btn btn-inverse", :disable_with => "updating..." 

这是我的控制器/app/controllers/missions_controller.rb

 def update @mission = Mission.find(params[:id]) respond_to do |format| format.html { render :action => "edit" } format.js {} end end 

这是/missions/update.js.erb:

 $('.tr_mission_').replaceWith(' "table_form", :locals => {:mission => @mission}).html_safe %>'); 

我的对象的更新工作一次,而不是两次,在firebug控制台上,我可以看到我的表单类型是第一次:text / javascript,下次打开text / html …

谢谢你的帮助。

首次,javascript在您的页面中刚刚加载。 所以它会奏效。 下次你的javascript不工作意味着你可能会在document.ready中添加你的脚本代码。

对于这个问题,您有两个解决方案:

  1. 您需要在每次更新时再次调用javascript文件。
  2. 您在特定的javascript函数中指定更新调用,并且必须在页面中的每次更新时调用该javascript函数。