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日くらいですが。
誰かの参考になりますかね〜。
サンプルコードはこんな感じです。
def show
@my_data = session[:my_session]
//このあと、@my_dataをshow.html.erbで利用する
end
def my_check
session[:my_session] = 1
redirect_to controller: 'XXXs', action: 'show'
end
以下のサイトを参考にしました。
https://qa.atmarkit.co.jp/q/3159
追記 セッションを使わなくてもいい
def select
redirect_to controller: 'quizzes', action: 'show', id: params[:id],
answered: @answered_quiz_ids
end
こんな感じで、selectアクションからshowアクションにパラメータを渡せました。別の書き方をすると、うまくパラメータが渡せなかった。というか、こんなところで、セッションとか使わない方がいいですね、やはり。とりあえず、いろいろ試行錯誤しているということです。