3

私はこのルビーコードを持っています:

link_to t("general.actions.#{ action }"), [action, @app, item], { 
   :method => :put, 
   :remote => true, 
   :onclick => '$(this).closest("tr").find("td").fadeOut()' 
}, :class => 'status' 

このhtmlを生成します:

<a href="/apps/guess-the-model/contents/52118140d644363dc4000005/approve" 
   data-method="put" 
   data-remote="true" 
   onclick="$(this).closest("tr").find("td").fadeOut()" 
   rel="nofollow">
    approve
</a>

問題は、onclick を使うべきではないということです。AJAX が成功した場合にのみ、この js コードを呼び出す必要があるため、何らかの方法でコールバックを渡し、XMLHttpRequest のステータスを確認する必要があります。:remote => trueと を使用してそれを行うにはどうすればよい:method= :putですか?

4

2 に答える 2

4

を使用remote: trueすると、Rails は format を使用してコントローラー アクションへの ajax 呼び出しを行いますjs。したがって、出力をレンダリングする準備が整ったときのコントローラーのアクションでは、format.js次のようにオプションを指定するだけで済みます。

def action
  ...

  respond_to do |format|
    format.html {...} # You probably have something like this already
    format.js {} # Add this line
end

action.js.erb次に、ディレクトリにファイルを追加し、そこでapp/views/app/実行したい JavaScript コードを実行する必要onclickがあります。

于 2013-08-19T15:25:55.303 に答える