rails学習 Mac にてユーザを登録するだけの簡単Railsアプリの勉強

rails Mac にてユーザを登録するだけの簡単Railsアプリの勉強
1年くらい勉強してやっとここまで理解できた。
書籍のチュートリアルをやるだけで理解できず、今度はひとつずつコマンドの意味を確認するようにしたら理解できるようになった。
railsがやっかいなのは、いろいろな記述方法が存在すること。
railsのバージョンによって記載が異なること。
さらに単数か複数が存在すること。
などなど、初心者、独学者にとっては地雷がたくさん存在すること。
なので、WEBの初心者にrailsはおすすめしない。
一旦他の環境(PHP,ASP,JAVA,HTMLなど)で学んでからrailsを学習することを勧める。そうしないとDBなどが理解できない。

以下のパスでやってみる
aidayota-no-MacBook-Pro:site maseda$ pwd
/Users/maseda/Documents/新書類/Webブログ、ネット/ruby_web2/site
aidayota-no-MacBook-Pro:site maseda$

バージョンはRails 5というのがちょっと最新すぎるけど
aidayota-no-MacBook-Pro:site maseda$ rails -v
Rails 5.0.7
aidayota-no-MacBook-Pro:site maseda$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]

SQLite3の確認 たいていMacにはインストールされてる
aidayota-no-MacBook-Pro:simple maseda$ sqlite3 -version
3.24.0 2018-06-04 14:10:15 95fbac39baaab1c3a84fdfc82ccb7f42398b2e92f18a2a57bce1d4a713cbaapl

2019年1月6日
とりあえず、
rails new simple
で簡単な練習をする

ユーザを登録するだけの簡単Railsアプリの勉強

(1)rails new simple
で5分位かかる。いろんなプラグインをインストールしてる。
topコントローラでindexアクションを作成する

(2)aidayota-no-MacBook-Pro:simple maseda$ rails g controller top index
topコントローラのためのtopディレクトリがviewsの中に作成される。
ここでtopは複数ではない。topはモデルがないからかな?
以下で作成するモデルmemberのコントローラはmembersとなり複数となる。ここがややこしい。

(3)config/routes.rb に
root ‘top#index’
を追加した

これでトップにアクセスするとtop#indexが実行される。
別のターミナルを起動して
rails s
を実行して簡易サーバを起動させる。

そして
http://localhost:3000
にアクセスすると
vi app/views/top/index.html.erb
の内容が表示される。
つまり、
root ‘top#index’
が実行されたことになる。
—ブラウザの画面

Top#index
Find me in app/views/top/index.html.erb

(41)今度はモデル、テーブルを作成する
rails g model member
そして列を追加する。rails では複数にしないがテーブルは複数のmembersテーブルが作成される。

(5)t.string :name, null: false ,NOT NULL制約をいれた
vi db/migrate/20190106024353_create_members.rb

(6)rake db:create
でもすでにDBはできてた。でもテストは作成された
aidayota-no-MacBook-Pro:simple maseda$ rake db:create
Database ‘db/development.sqlite3’ already exists
Created database ‘db/test.sqlite3’

(7)そしてマイグレーションする
rake db:migrate

Memberテーブルの照会
aidayota-no-MacBook-Pro:simple maseda$ rails c
Running via Spring preloader in process 43918
Loading development environment (Rails 5.0.7.1)
irb(main):001:0> Member.count
(0.2ms) SELECT COUNT(*) FROM “members”
=> 0
まだ0件。とりあえずmembersテーブル(複数名)があることがわかる
このテーブルにはname列しかない

なおSQLITEで確認するには
aidayota-no-MacBook-Pro:simple maseda$ sqlite3 db/development.sqlite3
SQLite version 3.24.0 2018-06-04 14:10:15
Enter “.help” for usage hints.
sqlite> .tables
ar_internal_metadata members schema_migrations
sqlite> SELECT * FROM members
…> ;
sqlite>
何も登録してないから0件で表示されないけど。

(8)rails g controller members
今度はmembers(複数)コントローラを作る。
モデルと同じ名称(モデルは単数)でテーブル名称は複数membersになる
(9)config/routes.rbに
resources :membersを追加した

rake routesで確認する。
ここでエラーになったらさっき修正した箇所を確認する。
大抵がつづりを間違っている。

(次はフォームを登録して、DBに登録内容を追加する。2019年1月6日)

(10)次にmembers_controller.rbにindexアクションを記載する。

(11)次にapp/views/member/index.html.erbを新規作成して、
コントローラで作成したオブジェクト@members(複数形)を取得して表示する。
テーブルデータが登録されていれば表示する。

(12)次にテスト用のデータをSQLITEに登録します
membersテーブルは列が一つnameだけです。

そして
rails s
もし、サーバを起動させていたら一旦停止して再度起動させる。そうしないとDBが反映されない。

http://localhost:3000/members
にアクセスする。
なぜ、membersなのかというと
rake routes
で実行すると
members#indexが表示されることがわかるから。

つまりコントローラのmembers_controller.rbのindexアクションで実行されて検索された@membersがビュー側のview/member/index.html.rbで表示される。
そして、その表示はルートで決まっている。
多分、Railsで訳がわからない人は、表示させるURLが規則に決まって何をどう知るかがわからない。
PHPやHTMLだけで作ってきた人は自由にURLを決めたいのにRailsだと規則を覚えないとわからないから理解できなくなる。
更にコントローラーとビューの関係が理解できないとわからない。
まずはすごくシンプルなアプリを作るところから始めると理解しやすくなる。なんでもシンプルなところからが良いみたい
(次は基礎本のP224 の新規登録をやろうと思う)

app/views/top/index.html.erb
メンバー一覧のためのリンク

(13)次に
members_controller.rbにnew,show,createメソッドを作成する。
さらにこのメソッドに連携するnew.html,show.htmlを作成する。

http://localhost:3000/
でトップ。

http://localhost:3000/members
で一覧になる。

newは新規登録
showは詳細表示になる

(13)members_controller.rb

(14)
view/member/new.html.erb

(15)
view/member/show.html.erb

(16)新規登録のときの入力フォームは
vidw/member/_form.html.erbを使用する
new.html.erbのformのところで呼び出される。

こちらの記事もどうぞ