LoginSignup
1
0

More than 5 years have passed since last update.

インターン 5日目 (2月2日)

Posted at

パーフェクト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を使う。
ちなみにこれだけじゃ、ダメで

app/assets/stylesheets/application.scss
* requireは使わない
 *= require_tree .
 *= require_self
 */
#の*=をそのままだとエラーが出るので*=の部分は消す。薄いけど、実は読み込みされており、文字じゃ無い!

これもやらなければいけない。

bootstrapを導入する場合はこういうページも参考にする

sqliteじゃなくてmysqlのDBを使うんだ。

gemfileについての注意
gemfileは、まず自分のパソコンにgemをbrew等でinstallしてから、railsのアプリケーションに初めてインストールできるようになる。
よってこのままだとエラーが出るときもあるが、そのときはエラー通りに直せば良い。

バリデーションの確認をするならここ
綺麗な申し込みフォームを作るならここ
そういえばストロングパラメータってなんだ?ってなったらここ
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にアクセスした時に、通常はアクセスの仕方として、GETPOSTがあるが、GETのときは、apply#indexが実行され、POSTのときは、apply#createが実行される。

このようなことを作ってくれるのは、resourcesというマッチングのおかげなので、resourcesを使わない場合は、自分で以下のような記述を行う。
post 'apply/confirm' => 'apply#confirm'
詳しくルーティングについて知りたいときはここ
database.ymlとは何か
そしてアソシエーションを極める

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のところに変更数データタイプを入れるのではなく、マイグレーションファイルを作った後に、変更をうつ。

管理画面を作ろう

ルーティング

config/routes.rb
namespace :admin do
  resources :order
end

コントローラー

app/controllers/admin/order_controller.rb
class Admin::OrderController < ApplicationController
end

ビュー

app/views/admin/order/ここに.html.erbを作るよ!
# htmlを適当に~

+追加情報
エラーの原因になるから、googleで一年以内の情報のみをとる。
bootstrapについて詳しくなりたいとき
bootstrap テンプレートで検索
bootstrap コンポーネントで検索

管理画面を綺麗に作る

復習して朝起きたらmacの液晶が割れてた。
おとしてないのに、なぜ。。。。。。。。。。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0