未経験からプログラマに、俺はなる!!〜とある東大生の挑戦記〜

院進学予定の東大農学部生がふと思い立ち、10か月でアメリカのプログラマーになるまでの記録(初めての方は左上のリンクから「このブログについて」に飛べます)

Progateのrails道場コースやってて詰まったこと(忘れてたこと)

タイトルの通りです。

今日progateのrails道場コース2を行っていて詰まったことを備忘録として書いておきます。

 

1.

htmlで複数のクラスを指定するよう求められます。特に新規投稿画面ですね。

ここで複数のクラスどうやって指定するんだっけ。。?そもそもできたっけ。。?と悩みました。

まあ単純に、<... class = "a b">ってすればaクラスとbクラスの両方を指定していることになるようです。<...class = "a" class = "b">ってやっちゃうと片方しか適用されません。

 

2.

画面上方のNewの文字をクリックした時の挙動(の予想)

application.html.erbで

<li><%= link_to "New", notes_new_path %></li>

の指定をしているので、notes_new_pathに行くだろう。

routes.rbで

get '/notes/new' => 'notes#new'

の指定をしているので、notes#newアクションに飛ぶだろう。

 

。。。と思っていたのですが、どうしてもshowアクションに飛んでしまいます。

showアクションには

@note = Note.find(params[:id])

と書いてあるので、:id=Newのidなんて見つからないよ?と怒られてました。

原因は、

Rails.application.routes.draw do
  root 'home#top'

...
  get '/notes/:id' => 'notes#show', as: 'note'
  get '/notes/new' => 'notes#new'
...
end

と書いていてしまったせいで、

Rails.application.routes.draw do
  root 'home#top'

...
  get '/notes/new' => 'notes#new'

  get '/notes/:id' => 'notes#show', as: 'note'(逆にした)

...
end

とすればなおりました。

notes_new_pathを取って来いって言ってんだからnote_pathは関係ないだろって思うんですが、ルーターの中では単純にnotes/newで探して行っていて、上から順に見てって先に見つかったnotes/:idに反応しちゃうんでしょうね。

 

本編には書いてあったかも知れませんが、僕が道場コースやっていて詰まったところでした。

追記

どっちも学習編に書いてありました><

流石です!