URL直打ちしてもindexアクションで購入した商品のURLに飛ばさない為の記述


 購入した商品のページにURL直打ちしてもindexページにリダイレクトさせる方法

Why

某フリマアプリでどうやるんだっけ?となったので自分で色々触っていたら解決したのでスクール生とかの為になればと思い記事を書きました!

URLの遷移先をどこにするかはコントローラーのindexアクションに記述します

orders_controller.rb
def index
    @item = Item.find(params[:item_id])
    @address = OrderAddress.new
    if @address.save
        redirect_to root_path
    end
end

4行目のif文と5行目のredirect_toに注目!

3行目で定義した@address(formオブジェクトでまとめた2つのモデル)をインスタンスで格納し、4行目で該当のレコードが保存されたらという定義をしています。そして保存されていたら(すでにレコードに情報があれば)redirect_toで「root_path」つまりトップページに遷移しまっせ〜というのが5行目の記述です。

これが!

こうなっていればOK!!

おまけ

ちなみに

  • items = 商品の情報
  • addresses = 購入者情報
  • orders = 商品IDと誰が買ったかのuserID
  • users = 全ユーザー

のネームセンスでお届けしました!

現場からは以上です!