の おと

考えたこと,学んだことを書きます

rails日誌(2)

shiningcureseven.hatenablog.com

の続き

コントローラー

  1. $ rails generate controller productした.
    命名はDBのテーブルに従った.

  2. product_controller.rb書いた
    アクション名:view
    テンプレート変数:@msg

  3. テンプレートファイルview.html.erbを手で作った.
    1.の時$ rails generate controller product viewしておけばビューview.html.erbも同時にできていたことをあとで知った.
    名前は対応させたいアクション名と同じにする必要がある. アクションメソッドを実行したあと,対応するテンプレートを検索実行する.

  4. view.html.erbを書いた.
    ただ@msgを渡しただけ.<%= %>は中を出力する.

  5. routes.rbにviewのパスを書いた.
    get 'product/view'

http://localhost:3000/product/viewの結果が f:id:shiningcureseven:20170906174756p:plain

ログ

エラー文にログを見ろと言われているのでlogファイルの中身は..
白紙の.keepのみ. dockerがいけないのか,railsがいけないのか.
docker-compose logsしたら f:id:shiningcureseven:20170906180156p:plain

これでてきたので今日のlogを抜粋してみました.

gistad8a7673f6162b0a6abe1060094c4c53

見てみると

Error grabbing logs: unexpected EOF
というのが気になる.予想外のEOF

どうしたら治るんでしょうか
MySQLの権限を変えた. cureseven:mysql cureseven$ sudo chown -R _mysql /usr/local/var/mysql Password: cureseven:mysql cureseven$ sudo chmod -R o+rwx /usr/local/var/mysql

rails serverで立ち上げたコンソールに
SyntaxError (/Users/cureseven/ruby-workspace/ruby-teamLab/ruby-teamlab/app/controllers/product_controller.rb:5: syntax error, unexpected end-of-input, expecting keyword_end):
とあった

product_controller.rbのクラスにendがなかった

結局MySQLが悪かったんじゃなくて,ただendを書き忘れていただけだった.
コントローラを作ったがviewアクションが実行されずにshowが実行されてしまったので,自分でアクション作る場合はコントローラの全ての機能を入れずにonly:で必要な機能だけ入れると良さそう.

解決した. 詳細は明日詳しく書く.

github.com