rails 第三章 静的なページの作成
静的なページを作るというお題
前にwprdpressの編集を行った時も静的なページから始めていた。railsも同じように静的なページ作成=>動的な部分を抜き出す=>それに合うデータベース作成(model)=>データを動かすコントローラーを記述するっていう流れなのかな?
wordpressだとheaderは全部自動化!!みたいな感じで楽だったけど笑
それにしてもせいてきって予測変換すると 性的ってなるんだけど、何この変態パソコン
テストについて
・正しいコードがないと失敗するコード作成=>そのあとに正しいコード作成
test "should get home" do
get :home
assert_response :success
end
の意味はGETリクエストをHomeアクションに発行、それができたら成功?(このテストコードが呼ばれた時点でHomeアクションってことじゃないの?)
同じコードを記述しない。こまめにクレンジング。常に最適化を
テスト用のコード
assert_select "title", "Home | Ruby on Rails Tutorial Sample App"
これの意味はtitleタグ内に以下の文章があるかを確かめるっていう意味。このコードを各テストメソッド内に埋め込んでいきましょう。
provide関数:<%provide (:title, Home)%>のようにview内で変数に値を渡す
<%=yield(:title) %>で値を取り出し、htmlに埋め込む
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%=yield(:title) %>|Rails Sample App</title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
の<body>にある<%= yield %>は何か?
ここに他のテンプレートであるhome.html.erb等の内容が入る=>html構造は無視してOK!一つひな形があればええやん
コントローラー内でのセットアップ、変数の記述方法
def setup
@base_title = "Rails Sample App"
end
参照するとき
#{@base_title}
分からないところ
・コラム3.1 元に戻す方法 まだやってない
・HTTPメソッド、何を基準として考えているのか
・テストの具体的なやり方(レッド、グリーン、リファクタリングと言われてもw)
・viewに埋め込めるrailsのタグはどんなのがあるんだろうか、、
・rails s -b$IP -p$PORT の意味とは
rails チュートリアル第二章で覚えておくこと まとめ
Toysアプリを作り、railsがどんなものなのかを一通り学ぶんじゃー。
scffoldっていうコマンドは超便利だけど、railsの理解には繋がらないからやめる、この章だけ使うらしい。
$ rails generate scaffold users name:string email:string 的な感じで作成
作成後はデータベースをマイグレートする必要があるので
$ rails exec rake db:migrate をする
こうすると自動でモデル、ビュー、コントローラーが作成され、routes.rbにもルートが通るようにパスが作成される
コントローラー内には自動にアクションが追加される
GET | /microposts | index |
すべてのマイクロポストを表示するページ |
GET | /microposts/1 | show |
id=1 のマイクロポストを表示するページ |
GET | /microposts/new | new |
マイクロポストを新規作成するページ |
POST | /microposts | create |
新しいマイクロポストを作る |
GET | /microposts/1/edit | edit |
id=1 のマイクロポストを編集するページ |
PATCH | /microposts/1 | update |
id=1 のマイクロポストを更新するアクション |
DELETE | /microposts/1 | destroy |
id1 のマイクロポストを削除する |
こんな感じ。疑問が二つあるよね。
①一番左のHTTPアクションってなんぞや
②なんでURLが同じものがあるのか
回答
①第三章でも説明があるらしいよ
②HTTPリクエストの違いらしい、URLが記述されていてもコントローラー上でアクションが起こるだけのものもあるから気を付ける
railsの良さはデータベース間の連携が簡単なことらしい。
has_many : で所有を表し
belongs_to:で帰属関係を表す
オブジェクト指向出てきた(笑)
これはつらい。baseっていうクラスが相当万能なんだろうなあと感じる今日この頃です
第二章 分からなかったところ
・baseがどんなクラスなのか
・REST
・
git によるバージョン管理について
バージョン=>ソースコードを書き直した履歴みたいなものを指すらしい、おそらく
gitで管理を行うとソースコードをうっかり削除してしまった時も直すことが可能らしい?
レポジトリ=>鳥のこと?w違うらしい 参照:ソースコードや設計情報などを保管するデータベースを意味する。 まあバックアップみたいなもんか
git=>上のものをすべて含んだものがgitらしい、、? クラウド環境で行っているので詳しいことが分からない
$ git status で現状確認
$ git commit -m"comment" でコミットすなわち反映を行える
$ git log でコメントの確認
このソースコードをwebでバックアップとりましょうっていうサービスがgithubとbitbuucketっていうサービスなんですね。
ぼくはBitbucketというリモートリポジトリを使っていく。
自分のローカルリポジトリからリモートリポジトリに反映(アップロード)していく作業をプッシュっという
チュートリアル通りにやったらできてしまったww
めっちゃ嬉しいw
ブランチについて
レポジトリのコピーのこと。実験的にコードを書きたい時にブランチを作成して元のソースコードを触ることなく編集が可能。共同作業をする時に初めて真価を発揮する。正直今の自分にはいらない機能かも(笑)
$ git checkout -b branch-nameで新しいブランチを作成
$ git branch で今あるブランチを一括表示
$ git mv 元ファイル 変更ファイル名 で名前を変更
次に編集する
その次にコミットする?
ブランチ=>編集=>コミットっていうくり返しをしっかりするようにしましょう!!
手順
$ git checkout -b modify-sample(ブランチ作成)
ファイルを編集する
$ git commit -a -m "improve apprication_controller.rb"(コミットする)
$ git checkout master(マスターに変更)
$ git merge modify-sample(ブランチをマスターにマージする)
$ git branch -d modify-sample
$ git push(bitbucketに反映するのは毎回ではなく、上手くいってから反映した方が良いか?)
$ rails server -b $IP -p $PORT (編集したものを確認)
コマンドライン ls
$ ls でディレクトリ直下にどんなファイルが置いてあるか確認
railsにおける最初の難関gemとbundleの意味とは
gem -宝石っていう意味らしい。ほかの機能をどんどん追加するときにgem rails -v4.4.4とか記述するから、gemっていうのかも
bundle -他の機能を入れる入れ物らしい。これからgem コマンドで追加していく機能の入れ物なのか、、、、
Wordpressのカスタムフィールドについて
そもそもカスタムフィールドとは?
wordpress公式リファレンスによると次の通り
WordPress には、投稿者が投稿に「カスタムフィールド」を追加できる機能があります。この任意の情報は「メタデータ」と呼ばれており、たとえば以下のような情報を含めることができます。
- 現在のムード: 幸せいっぱい
- 今読んでいる本: 星の王子様
- BGM: Rock Around the Clock
- 今日の天気: 晴れ
さらに、ちょっとしたコードを付け加えるだけで、このメタデータに投稿の表示期限を付け加えたりすることも可能です。
メタデータは「名前」と、その「値」の組み合わせからなっています。「名前」は、メタデータ要素の名称のことを指します。「値」は、その要素に対応する情報を指します。一般的には、固定された「名前」に対し、記事によって異なる「値」を記入します。
また、ひとつの記事で、複数のメタデータの名前を使用することもできます。例えば今読んでいる本が2冊ある場合、「今読んでいる本」という名前を2度使い、それぞれに対し1冊の本の題名を記入すればよいのです。
カスタムフィールドを記入した場合、記事中に以下のように表示できます。
- 今読んでいる本: 星の王子様
- 今日の天気: 晴れ
ふむふむなるほど。つまり読書感想文のようなブログを作る際に、すべての記事に”読んでいる本”の値を付けることができるようです。このデータは後から取り出すこともできます。
こんな関数
<?php $meta_values = get_post_meta($post_id, $key, $single); ?>
それぞれの値を見ていきましょう
$post_id は $post=>$id で現在の記事を取得。
$key は 取得したい名前を入れる。本なら"今読んでいる本"的な感じに
$single は 良く分からん
この機能を使えば、記事それぞれにjsを付けたりすることもできます。ある記事は記事内に盛大なエフェクトををつけてみたりね笑