Rails

redirect_toやrenderのオプションではなく、sessionを使いました。

Ruby on rails

やりたいこと・・・アクション間のデータの受け渡し

インスタンス変数を使えば良いと思って、インスタンス変数@hogeをshowアクションとmy_checkアクションに記述して、my_checkアクション内で、showアクションをredirect_toして、binding.pryで確認したところ、アクション間ではインスタンス変数@hogeはデータを受け渡しできないことがわかりました。
つまり、my_checkアクションでは@hogeにデータが入っているのに、my_checkアクションからredirect_toされたshowアクション内の@hogeを見ると、nilになっていました。

ということで、アクション間でデータを送りたい場合は、sessionを使おうということです。

自分は思い込みで、redirect_toかrenderに引数(オプション)をパラメータとして指定してやれば、アクション間でのデータの受け渡し(共有?)をできると思って、いろいろコードをいじってましたが、駄目でした。
結構悩んだので、ここにメモって置きます。と言っても、1日くらいですが。
誰かの参考になりますかね〜。

サンプルコードはこんな感じです。

XXXs_controller.rb
def show
  @my_data = session[:my_session]
  //このあと、@my_datashow.html.erbで利用する
end

def my_check
  session[:my_session] = 1
  redirect_to controller: 'XXXs', action: 'show'
end

以下のサイトを参考にしました。
https://qa.atmarkit.co.jp/q/3159

追記 セッションを使わなくてもいい

quizzes_controller.rb
def select
  redirect_to controller: 'quizzes', action: 'show', id: params[:id], 
answered: @answered_quiz_ids
end

こんな感じで、selectアクションからshowアクションにパラメータを渡せました。別の書き方をすると、うまくパラメータが渡せなかった。というか、こんなところで、セッションとか使わない方がいいですね、やはり。とりあえず、いろいろ試行錯誤しているということです。