アプリ版:「スタンプのみでお礼する」機能のリリースについて

redirect_to先のviewで、redirect_to元のデータで何の処理を行ったか目視したいので
簡単に内容を表示させたいのですが
リダイレクト元のコントローラの変数を、リダイレクト先のviewに渡すにはどうしたらいいのでしょうか。


--api_controller.rb
class ApiController < ApplicationController
 def foo
  arr = [1,2,3,4]
  #arrをいろいろと処理
  redirect_to :controller => "top", :action => "bar"
 end
end

--top_controller.rb
class topController < ApplicationController
 def bar
  #ここで@arr = arrしたい
 end
end


top/bar.html.erbもしくはbarコントローラでarrを受け取ることは可能ですか?

A 回答 (1件)

そのような場合は、flashを使用すると良いでしょう。


セッションを使用する方法もありますが、リダイレクトした先の画面で一時的に使用したい場合は、
flashが適しています。
def foo
  arr = [1,2,3,4]
  #arrをいろいろと処理
  flash[:arr] = arr #ここで設定する
  redirect_to :controller => "top", :action => "bar"
 end

def bar
  #ここで@arr = arrしたい
  arr = flash[:arr] #ここで元の画面で設定したarrが取得できる
 end

尚、flashは現在のリクエストと次のリクエストのみで使用可能です。その次のリクエストでは使用できません。(使用可能にする方法が無いわけではありませんが、そのままだと使用できません)
今回はflash[:arr]としましたが、:arrのところは、他のシンボル名でもかまいません。
例 flash[:hogehoge] = arr でもOKです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!