RubyOnRailsの立ち上げ
RubyOnRailsの立ち上げは $rails server コマンドを使用する
Railsのコントローラーを作成する
Railsのコントローラーはブラウザにビューを返すもの
RubyOnRailsのコントローラーを作成するには $rails generate controllerコマンドを使用する
$rails generate controller コントローラー名 アクション名 となるように記述する。
$rails generate controllerを実行するとルーティングとビューが作られる。
ルーティングの内容
RubyOnRailsのルーティングはURLとコントローラー、アクション名が記述されている。URLがどのコントローラー、アクションを呼び出すかを定義している。
アクション内の変数定義
RubyOnRailsのアクションはコントローラーに定義されており、アクション名と同じビューファイルを探しだして表示する。
アクション内で変数定義する場合は @ 記号を用いて定義する。
Railsでテーブルの作成
RubyOnRailsのテーブル作成は $rails generate modelコマンドを使用する。
【$ rails generate modell テーブル名 カラム名:データ型】のように記述する。
rails generate modelコマンドの次は db:migrateコマンドを実行する。これでテーブルが作成される。このとき2つのファイルが自動的に作成されている。またデータベースにはidカラムとcreated_atカラム、updated_atカラムが自動的に作成される
データベースのデータ作成やデータ取得
たとえばrails g modelコマンドを実行しPostテーブルを作成する。
$rails g model Post content:text
ApplicationRecordクラスを継承するPostクラスが作成される。
データの作成
- 変数 = テーブル名.new(content: “こんにちは”)
- 変数.save()
データの取得
- テーブル名.all → テーブル全てのデータを取得
- テーブル名.first → 1行分のデータを取得
- テーブル名.all.カラム名 → カラムデータの取り出し
特定のデータを取得
テーブル名.find_by(id:3) → idが3の行のデータを取得
テーブルの並び替え
- テーブル名.all.order(カラム名: :desc)
- テーブル名.all.order(カラム名: :asc)
共通のビュー
共通のビューはapplication.html.erbというファイルに記述されている。 には各ビューの情報が格納されていて、が存在することによって各ページが表示される仕組みになっている。
Railsのリンクの作成
link_to()メソッドはリンクを作成するメソッド。link_to(文字列, URL)の第一引数には文字列、第二引数にはURLを指定する。
<%= link_to("投稿一覧", "/posts/index")%>
URLは 必ず / スラッシュからはじめる。
ページ番号つきのURL
ページ番号付きのURLはルーティングのURLを変更する。get “posts:/id” => “postsー#アクション名”とするとページ番号付きのURLを表現できる。:idの部分がページ番号になっている。
アクションでページ番号を取得する
ルーティングで定義した :id はparams[]を使うことによって取得できる。
- params[:id]でURLのページ番号に対応した値を取得することができる。
- Post.find_by(id: params[:id])とするとURLのページ番号に対応したテーブルのレコードを取得できる
ページ番号に対応したデータを取得する
データベースからページ番号に対応したデータを取得するには find_by()メソッドとparams[]を組み合わせて使います。
@post = Post.find_by(id: params[:id])と書くことによってページ番号と同じid番号のデータをデータベースから取得できます。
フォームの送信とリダイレクト
RubyOnRailsでフォームの送信を受け取るにはルーティングに受け取り用のurlとコントローラーを追加する必要があります。このとき属性はpostにしておきます。
post “url” => “コントローラー#アクション” のと記述します。
html側はform_tag()メソッドでフォームの送り先をルーティングと同じURLにしておきます。
フォームの値をうけとるには、アクションでparams[:content]を使用します。さらにそれをデータベースに反映するには
Post.new(conetnt: params[:content])と記述します。
フォーム送信を行った際にリダイレクトさせるにはredirect_to()メソッドにリダイレクト先のURLを指定します。
コメント