Ruby on Rails チュートリアル 第14章 フォローフォームでのAjaxの採用


Ajaxの使用法と効果

 ここではRailsチュートリアル14章におけるフォローフォーム作成の際にAjaxを導入する方法及びその効果について説明する。
 まず、Ajaxの導入方法については、フォーム側の更新作業としては

app/views/users/_follow.html.erb
<%= form_for(current_user.active_relationships.build, remote: true) do |f| %>
  <div><%= hidden_field_tag :followed_id, @user.id %></div>
  <%= f.submit "Follow", class: "btn btn-primary" %>
<% end %>

上記のコードのように、form_forメソッドの引数にremote: trueのハッシュを与えるだけでよい。こうすることでRailsは自動的にAjaxを使うようになる。(*なお、上記の_follow.html.erbファイルはフォロー用のパーシャルであり、form_forを使ってRelationshipモデルオブジェクトを操作し、PostリクエストでRelationshipコントローラに、現在表示しているプロフィールのユーザーのuser.idをfollowed_idとして送信する)
 つぎにAjaxのリクエストを受け取るコントローラー側に変更を加えていく。

app/controllers/relationships_controller.rb
class RelationshipsController < ApplicationController
  before_action :logged_in_user

  def create
    @user = User.find(params[:followed_id])
    current_user.follow(@user)
    respond_to do |format|
      format.html { redirect_to @user }
      format.js
    end
  end



end

そして、、、、

 また、Ajaxを使用することで、webページ上でユーザーをfollowないしunfollowした際に、ページを移動することなくフォローに関するリクエストをサーバーに送信することができる。