RailsでAjax処理で画面を更新する方法を簡単に紹介します。
link_toやform_forなどで remote: true を指定します。
(下記の例ではusers_controller.rbのupdateアクションが実行されます)
<%= form_for @user, method: :patch, remote: true do |f| %>
コントローラーでは特別な処理はありません。
通常通りの更新処理を書きます。
update.js.erbファイルにJavaScriptの処理を書いていきます。
.attrなどで個別に要素を変更するだけでなく、下記のようにpartialとして切り出したテンプレートを指定して画面を更新することもできます。
$('#user_status').html("<%= j (render 'users/status') %>");
このようにすると、id=”user_status”の子要素としてレンダリングしてくれます。
partialとして切り出したテンプレート内のidを指定してしまうと、Ajax遷移するたびにどんどんネストされていくので注意が必要です。
また、上記のようにAjaxで遷移した場合redirect_toでリダイレクトできません。
更新失敗などの時にリダイレクトしてたい場合は、下記のようにするとできます。
window.location.replace('<%= users_path %>');
http://qiita.com/mm36/items/684f36f22e79d0a27ae9
http://qiita.com/geshi/items/536956b8bed7c2126187
RailsでAjax処理で画面を更新する方法を簡単に紹介しました。