Controllerについて その2(redirect_to)
コントローラ内のアクションについて学習して、少し難しく感じた、 redirect_toとrender について記事にします。
redirect_to
主な役割は以下の二つ。
- アプリケーション内の他のアクションを呼び出す。
- 他のURLやPATH先にリダイレクトさせる。
他にもパラメーターを渡したりと色々出来るようですが、直近ではまだ恐らく使わないので無視します。 Progateの中では 2. の用途で使うことが多いです。
具体的に自分が使ったような例だと、
def authenticate_user if @current_user == nil flash[:notice] = "ログインが必要です" redirect_to("/login") end end
のようにユーザーがログインしていない状態の時にlocalhost:3000/login
に飛んで戻るというコードです。
アクション名はauthenticate_user
でインスタンス変数@current_user
がない場合(ログインしていない状態)、ログインページに飛ぶという処理です。
記事が長くなりそうなので次回renderについてとredirect_toとの違いについて記事にします。
Controllerについて その1
今日はControllerについてわかったことを記事にしました。
まず、Controllerはブラウザとモデル、ビューの間に入って色々と仲介をしているのだという認識です。実際にコントローラファイル内でアクションを定義してそれを色々なファイルに反映していくようです。
具体的に、
rails generate controller コントローラ名
でapp/controllers
の配下にコントローラ名.rb
のファイルが作成されます。
.rb の部分はこのファイルがRubyファイルであることを表しています。
そしてファイル内には
class コントローラ名Controller < ApplicationController end
とクラスの継承が書かれています。
アクションの定義は普通にRubyで
def アクション名 実行したい処理 end
と先ほどのクラスの中に書いていきます。
コントローラ作成時にアクションも同時に作成できるらしいのですが、他にも色々と覚えることが多いので今は、覚えずに放置します。 アクションの処理を具体的に加えると、
class UsersController < ApplicationController def index @user = User.all end end
のようなコードになります。
UsersController
クラスの中にindex
という アクションを定義しました。
処理の中身は今回はまだ作っていませんが、データベースの中にあるUser
テーブルの全ての値をall
メソッドで取得して、インスタンス変数@user
の中に代入しています。
今日は以上です。
Controllerとアクションだけでも記事にできることはたくさんあると思うのですが、Progate, tutorial とインプットできる時間が減りそうなので、 どれくらいの頻度で記事を書くのかは少し検討したいと思います。
はじめまして
はじめまして。
1月1日からはれて無職になった、Nobuoです。
現在、まつしんさんというすごいエンジニアさんのもとでメンティーをしています。 こちらまつしんさんのブログです。
勉強の計画としては当面は 12月中にProgateの html&CSS JavaScript jQuery Ruby Ruby on rails Sass SQL を終わらせることでした。
1月の前半でrails tutorialを読み終わることです。
現在Progateは
残り Ruby on Rails のみ。 あと三日で本当に終わるのか。
https://cpmybbs.herokuapp.com/
また右下にDriftというチャットサービスを埋め込んでいます。 このようなWEBサービスを作れるようになればいいなと考えています。