【Ruby on Rails】redirect_toはviewでは使えない件

どうも、Railsってやっぱり色々難しいなぁって思うことが多いものです。

さて今回はRailsをやっていたらほぼ絶対に使うであろうredirect_toでちょっとハマったので、解決策を簡単にまとめておきたいと思います。

結論は「redirect_toはview上で使えないので、controller上で使いましょう」です。

【Ruby】redirect_toはviewでは使えない件

redirect_toはviewでは使えない

まず私がやりたかったのは「ログインしていないユーザーには、ログイン画面を表示させる」という処理です。

以下のようにview上でif文で分岐させることで、うまく動くかと思ったのですが、うまく動きませんでした。

view
<% if logged_in? %>
  #ログインしている場合に表示させる内容
<% else %>
  #ログインしていない場合に表示させる内容
 <%= redirect_to new_sessions_path %> 
<% end %>

理由は「MomethodError」でredirect_toが定義されていないよという理由からでした。

redirect_toやrenderはcontrollerで使う

どうやらredirect_torenderというメソッドは、コントローラー上でしか使うことができないみたいです。

ですので、コントローラー上でログイン判定するメソッドを使って処理を分岐すれば、思ったような挙動が実現できました。上とほぼ同じ内容をコントローラー上に記載するだけです。

controller
<% if logged_in? %>
  #ログインしている場合に表示させる内容
<% else %>
  #ログインしていない場合に表示させる内容
 <%= redirect_to new_sessions_path %> 
<% end %>

しばらくハマっていたので、抜け出せてよかったですが、こんなこともまだまだ知らないので、もっともっと使っていかないといけないですね。では!

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA