前提
初学者でオリジナルアプリを作成しています。拙い質問ですが、知見をお借りできれば幸いです。
実現したいこと
データベースに保存したトランプの画像53枚をビューファイルでシャッフルした結果を表示したい
発生している問題・エラーメッセージ
エラーは出ていないが、表示されている画像の一覧が投稿順のままで、シャッフルされていない
該当のソースコード
Ruby
<% @librarys.each do |libra| %> <% libras = Array.new %> <% libras.push(libra.image) %> <% libras.shuffle %> <%= image_tag libras.sample, class: "show-image" %> <% end %>
試したこと
インスタンス変数@librarysを最初に下記のコードで記述し、シャッフルしてみましたが、結果は変わりませんでした。また、shuffleについて調査してみましたが知見を得られず質問をさせていただくことにしました。
Ruby
<% @librarys.shuffle %> <% @librarys.each do |libra| %> <% libras = Array.new %> <% libras.push(libra.image) %> <% libras.shuffle %> <%= image_tag libras.sample, class: "show-image" %> <% end %>
補足情報(FW/ツールのバージョンなど)
データベースには、順番通りに投稿したトランプの画像データ53枚が保存されている状態です。
コントローラーのコードも記述します。
Ruby
class LibrarysController < ApplicationController before_action :library_set, except: [:index, :new, :create] def index @librarys = Library.order("created_at DESC") end def new @library = Library.new end def create @library = Library.new(library_params) if @library.save redirect_to root_path else render :new end end def show end def edit end def update if @library.update(library_params) redirect_to library_path else render :edit end end def destroy if user_signed_in? && current_user.id == @library.user_id @library.destroy redirect_to root_path else redirect_to root_path end end private def library_params params.require(:library).permit(:card_type, :image, :numbers).merge(user_id: current_user.id) end def library_set @library = Library.find(params[:id]) end end
0 コメント