前提・実現したいこと
ruby on railsでユーザーの存在するアプリケーションを作っております。
ユーザー一覧ページを動的に、スライドにより表示できるようにしたいです。
言葉では説明し難いので画像付きで状況を説明します。
上図のようにユーザーが順番に横に並んでおり、真ん中のユーザーだけ詳細な情報(今回は名前)が表示されます。
右の人をクリックしたら全員右にスライドし、左側にいた人が中心となります。左側の人をクリックしたら全体が左にずれて右側の人が真ん中になるようにしたいです。
スライドさせるためのアニメーション周りのコードは質問したいこととズレているため省略しております。
該当のソースコード
Usersコントローラーのindexアクションはこんな感じです。
ruby
1 def index 2 @users = User.all 3 @x = current_user.id 4 end
usersコントローラーのビューのindex.html.erbは次のようになっています。
(show_avatorというメソッドはそのユーザーのアバター画像を表示する自作メソッドです。)
erb
1 <% @users.each_with_index do |user, i| %> 2 3 <% case i when @x-1 %> 4 <%= show_avator(user) %> 5 <% when @x %> 6 <%= show_avator(user) %> 7 <h3><%= link_to user.name, (user_path(user.id)) %></h3> 8 <% if user.admin? %> 9 <h3 style="color: red">Guild Master </h3> 10 <% end %> 11 <% when @x+1 %> 12 <%= link_to show_avator(user),"/users/next",remote:true %> 13 <% end %> 14 15 <% end %>
試したこと
真ん中に表示する人のインデックス番号を変更すれば真ん中に表示される人が変わるので、
今回の場合だと@xを動的に変化させればいいのではないかと考えました。
ruby
1 def next 2 @x += 1 3 end
動的に変化させることなのでajaxを使おうと考えました。
そこでusersコントローラーに上記のようなnextアクションを作り、右の人をクリックした時にnextアクションに飛び変数を変更するようなlink_toを作りました。
しかし、ajaxに対する理解はとても浅く、うまく動きません。どのようにしたら良いでしょうか。
補足情報(FW/ツールのバージョンなど)
rails 5
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。