Ruby on RailsⅡ1章 投稿機能を作ろう 〜投稿データの保存・データベースの構造
20170213@home Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
目次
投稿データの保存
- モデルとテーブルは対応関係
- モデルはクラスにあたるもの
セッターとゲッター
セッターとゲッターはコントローラやビューから自由に呼び出せる。
→Ruby上級編に説明があるらしいので、後で見る
noteテーブルにデータを保存する。
- Noteインスタンスを生成
- セッターで値をセット
- saveメソッドを呼び出す
データベースの構造
console機能
モデルを操作してDBの中身を見られる。
rails console
gemのインストール
突然のgem
hirbというgemを入れると、rails console
が見やすくなる。
(手順どおりにやったら”入れないとどのくらい見づらいか”を見る前にhirbを入れたので、見やすかった・・・)
今回の勉強時間:13分 累計勉強時間:1時間50分
Ruby on RailsⅡ1章 投稿機能を作ろう 〜モデルとデータベース
20170212@home Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
目次
データを保存したい
ここまで作ったものでは、投稿内容は保存されていないのですぐ消えてしまう。 それではWebアプリとしては意味が無いので、当然データは保存しないといけない。
データを保存するためには、モデルとデータベースが必要。
モデルは何をする?
コントローラから指示を受けて、データベースへのデータ保存・データ取り出しを行う。
モデルとデータベースの作りかた
rails generate model モデル名 カラム名:データ型
実行すると、app/models/モデル名.rb
が作成される。
rake db:migrate
データベース生成。
ここまでで準備が出来た。 次は、今回作ったDBにデータを保存する部分。
今回の勉強時間:8分 累計勉強時間:1時間37分
Ruby on RailsⅡ1章 投稿機能を作ろう 〜投稿の表示
20170212@home Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
目次
投稿を表示する
一つ前のレッスンでは終わりが釈然としなかったものの、今度こそ自分が投稿したものを表示できるはず。
フォームの入力値に名前をつける
inputタグにname属性をつける。
入力値を受け取る
def create @title = params[:title] end
変数title
に、name=title
の要素の値を代入している、でOKなのかな?
疑問:nameが重複していたらどうなる?
やったこと
notes_controller.rb
のcreateアクションで@title
, @content
に投稿画面でユーザが入力した内容を渡して、
それをcreate.html.erb
で受け取って表示させた。
で、正しく動いた。
ここまでで、無料会員で受けられるレッスンが終了。
今回の勉強時間:8分 累計勉強時間:1時間29分
Ruby on RailsⅡ1章 投稿機能を作ろう 〜投稿の表示の準備
20170212@home Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
目次
投稿表示
前回作ったフォームで投稿した内容が表示されるページをつくる。
投稿を表示するために、
①ルーティング
②アクション
③ビュー
の設定を行いましょう。
ルーティングの設定
routes.rbに
post '/notes' => 'notes#create'
を追加
アクションの設定
notes_controller.rbに
def create end
を追加。
ビューの設定
new.html.erbに
<%= form_tag notes_path do %>
notes_path
を追加して、フォームの内容がnotes#create
に送られるようにする。
試しに投稿してみると・・・
!!!!無事失敗!!!! そうこなくては。
エラーメッセージを見るに、
gatebook/app/views/notes/create.html.erb
が無いとダメって言っている気がする。
が、このセクションが「投稿の表示の準備」なので、おそらく次のセクションで↑のファイルは作るはず・・・。
でも手順では「新規投稿ページから試しに投稿をしてみよう」と言ってる。
まさかエラーでる状態でセクションを終えて、次で「さっきはエラーが出たはずだ!まずはコレを消していこう!」とか言い始める・・・?
「まさか」と思ったそのまさかだった・・・
今回の勉強時間:22分 累計勉強時間:1時間21分
Ruby on RailsⅡ1章 投稿機能を作ろう 〜フォームを作ろう
20170212@home
目次
投稿機能の作成
- 投稿の作成
- 編集
- 一覧機能
- 削除
といった基本機能の作成。
このへんは何を作るにも必要になってくるだろう部分なので、押さえる。
notesコントローラを作る
rails generate controller notes new
フォームを作る
form_tag
ヘルパーを使う。
その他、CSSで見た目を変えて、ヘッダのナビゲーションにリンクを追加して、フォーム(機能は乗っていないもの)ができた。
最初、フォームが出来たものの見た目が変なままだったので、何か間違えたのかと色々見てみたけど、そうこうしてるうちにちゃんと表示されるようになった。 たぶんProgate側で、コード変更時の反映までに微妙なタイムラグがあるのかも。
今回の勉強時間:11分 累計勉強時間:59分(惜しい!)
Ruby on Rails Ⅰ2章 Railsの基礎を学ぼう 〜Railsにおけるレイアウト
20170212@home
目次
top.html.erbなどのビューには
タグやタグが書かれていません。Railsには「application.html.erb」というビューの共通部分をまとめたファイルがあり、タグのような、どのビューでも必要なコードはここに書きます。
どのビューでも必要なコード、とは、ヘッダーやフッターなど。サイト全体で表示する箇所。
疑問:じゃあ「このページでだけヘッダのこの部分を出したくない」といった場合はどうするのか。
ヘルパー
stylesheet_link_tag
javascript_include_tag
エキュリティのためのタグ?
javascript_include_tag
の説明に「セキュリティのためのタグ」と書いてあった。どういうことか。
CSRF=リクエスト強要を防ぐためにRails側が対策をしてくれる。
参考:IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第4章 セッション対策:リクエスト強要(CSRF)対策 (IPAのサイトなので信用できるはず。)
Ruby on Railsの他にもCakePHPなどがCSRF対策用の仕組みを提供しているとのこと。
演習を終えて、終了。
今回の勉強時間:18分 累計勉強時間:48分
Ruby on Rails Ⅰ2章 Railsの基礎を学ぼう 〜Railsにおけるリンクの書き方
20170211@home
Railsでページ間のリンクを設定する方法
link_toヘルパーを使う。
<%= link_to "表示するテキスト", "URL" %>
link_toの引数はカッコ()を付けて書けるし、省略することもできる。 省略したときは半角スペースを入れる。
名前付きルート
ターミナルで
rake routes
コマンドで確認できる。
about GET /about home#about
の場合、
about_path
が/about
を指す。
rootパス
root 'コントローラ名#アクション名'
やってみたが・・・
こんなエラーが発生。 ヒントから「答えを見る」して、解答をコピペしても変わらずだった。
もしかして
localhost:3000/top
にアクセスしようとしていたのが間違っていたらしい。
localhost:3000/
にアクセスするとtopが開かれるのが正解。
でもlocalhost:3000/top
を直接叩くと↑のエラーが出るのもそれはそれで対応が必要なのでは。
今回の勉強時間:30分