5

私はこの最後の日、問題に直面しました。リモートフォームを使用してオブジェクトを更新したい。基本的に、最初にフォームを送信するときにオブジェクトを更新できますが、2回目は機能しません。

だから、私は部分的にリモートフォームを持っています。

view / Missions / _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_<%= @mission.id %>').replaceWith('<%= escape_javascript( render :partial => "table_form", :locals => {:mission => @mission}).html_safe  %>');

オブジェクトの更新は2回ではなく、1回機能します。firebugコンソールでは、フォームのタイプが初めてであることがわかります。text/ javascriptで、次にtext/htmlがオンになります...

助けてくれてありがとう。

4

1 に答える 1

0

初めて、JavaScript がページに新たに読み込まれます。それでうまくいきます。次回 JavaScript が機能しない場合は、document.ready 内にスクリプト コードが追加される可能性があります.......

この問題には、次の 2 つの解決策があります。

  1. 更新のたびに、JavaScript ファイルをもう一度呼び出す必要があります。
  2. 特定のJavaScript関数で更新呼び出しを指定し、ページで更新が発生するたびにそのJavaScript関数を呼び出す必要があります。
于 2012-10-05T13:50:44.293 に答える