パーフェクトRubyを読む ぜんぶ(だんだんむずくなった)
ぱぁーと大体の内容を掴んで、今後こういう機能があったなとメタで思い出せて、詳しく使う時にまた調べられるように概要の理解。
- モジュールに定義されたメソッドは、クラスのインスタンスメソッドとして取り組むことができる。これをMix-inという。
- モジュールのメソッドをインスタンスメソッドとして取り組むためには、includeを用いる。
- 継承できるクラスは一つだけなのに対して、includeできるモジュールの数には限りがない。
途中でrubyの練習用にjupyter notebookを使いたい。
色々あるけどこれがよかった。
配列を操作する場面で、各要素を特定の方法で変換した新しい配列を得たい
=>このような用途にはEnumerable#mapを用います。
mapは与えられたブロックを評価した結果の配列を返す。
例えば、配列の要素の文字列を全て大文字に変換する処理は以下。
['ruby', 'raise'].map {|str| str.upcase }
# => ["RUBY", "RAISE"]
Thread
Queue
Fiber
メッソド探索のまとめ
①Rubyインタプリタは、レシーバの特異クラスを参照し、メソッドを探す。
②特異クラスにメソッドがない場合、レシーバの直接のクラス(特異クラスの親クラス)を参照し、メソッドを探す
③参照したクラスにメソッドが無い場合、その親クラスを参照し、メソッドを探す
④③をメソッドが見つかるまで繰り返す
⑤継承ツリーの一番上のクラスまで4を繰り返してもメソッドが見つからない場合、このメソッド名での探索をやめる
⑥メソッド名と引数を引数にして、レシーバの特異クラスからmethod_missingが実装されているクラスを探索していく
デバッグで使用するもの
binding pry
pryは止めて見たりするもの
pry debuggerはnextとかをするための機能拡張
このデバッグについては、次にエラーが出た時に一度体系的に理解する。
では、一度最初からの開発
手順は以下
- rails new internで始める
- gitに接続
- headerを作る
- headerからトップ、撮影の流れ、申し込みの3ページにいける
- 撮影申し込みページは、1の申し込みページ、2の確認ページ、3の完了ページに分かれている
- 管理画面がある。管理画面では、1申し込み内容一覧が見れる。2申し込み内容から納品ページに飛べる。3納品ページでは複数枚の納品ができる。4納品が完了したら、完了ページにて納品した枚数全てが確認できる
- 1、トップページににて、アルバムのうち一枚がサムネイル表示されている。2、サムネイルをクリックすると詳細ページに飛べる
bootstrapの導入もちろんscssを使う。
ちなみにこれだけじゃ、ダメで
* requireは使わない
*= require_tree .
*= require_self
*/
#の*=をそのままだとエラーが出るので*=の部分は消す。薄いけど、実は読み込みされており、文字じゃ無い!
これもやらなければいけない。
bootstrapを導入する場合はこういうページも参考にする
gemfileについての注意
gemfileは、まず自分のパソコンにgemをbrew等でinstallしてから、railsのアプリケーションに初めてインストールできるようになる。
よってこのままだとエラーが出るときもあるが、そのときはエラー通りに直せば良い。
バリデーションの確認をするならここ
[綺麗な申し込みフォームを作るならここ]
(https://www.imd-net.com/column/1731/)
[そういえばストロングパラメータってなんだ?ってなったらここ]
(https://qiita.com/mochio/items/45b9172a50a6ebb0bee0)
No route matchのエラーが出たらここ
rake routesのroutingの読み方がいまいちわかってなかったけどわかった。
Prefix Verb URI Pattern Controller#Action
apply_index GET /apply(.:format) apply#index
POST /apply(.:format) apply#create
これの読み方は、apply_index
にアクセスした時に、通常はアクセスの仕方として、GET
とPOST
があるが、GET
のときは、apply#index
が実行され、POST
のときは、apply#create
が実行される。
このようなことを作ってくれるのは、resources
というマッチングのおかげなので、resources
を使わない場合は、自分で以下のような記述を行う。
post 'apply/confirm' => 'apply#confirm'
詳しくルーティングについて知りたいときはここ
database.ymlとは何か
[そしてアソシエーションを極める]
(https://qiita.com/To_BB/items/47d2c7b1bc3513025d7b)
albumモデルとそれに紐付けるimagesモデルを作る
albumモデルは、ただモデルの番号をつけるだけだから、alubm_name:stringだけもし必要な場合に作っといて、紐付けはもともと生成されるidでやる。
imagesモデルは、もともと生成されるidと,albumモデルに紐づけるためのalbum_idをカラム型はintengerで、imageはstring型で、なお、アソシエーションを行うときは、お互いのカラムの型を揃える必要があります!。
intengerじゃなくて、integerね。
railsでカラムのデータ型間違えた場合はエディタでいじっちゃダメ
=>いじっちゃいけないのは、一度マイグレーションが行われた後なだけで、カラム型のspellミスでの場合は、そもそもマイグレーションが行われていないから、直接の変更して、そのあとマイグレーションを行えばOK!
rails g migration change_datatype_title_of_articles
rails g migration change_datatype_カラム名 _ of _ テーブル名
datatypeのところに変更数データタイプを入れるのではなく、マイグレーションファイルを作った後に、変更をうつ。
管理画面を作ろう
ルーティング
namespace :admin do
resources :order
end
コントローラー
class Admin::OrderController < ApplicationController
end
ビュー
# htmlを適当に~
+追加情報
エラーの原因になるから、googleで一年以内の情報のみをとる。
bootstrapについて詳しくなりたいとき
bootstrap テンプレートで検索
bootstrap コンポーネントで検索
復習して朝起きたらmacの液晶が割れてた。
おとしてないのに、なぜ。。。。。。。。。。