<DAY57> resourcesを使ったCRUD処理を実装した日
<学習時間と累計時間>
●学習日数 57日
●学習時間(本日) 6時間
●累計学習時間 149時間
●一日あたりの平均学習時間 2.61時間
<本日の学習内容>
resourcesメソッドを使ったCRUD処理の実装をした。
resourcesとは、index, new, create, show, edit, update, delstroyなどのルーティングを一括で定義することができるとても便利なメソッド。これにより、ルート設定をいちいちしなくても、命名規則に則りさえすれば、簡単にルート設定ができます。 なんと、
resources :users
これだけで良い。すごく便利なメソッドです。CRUD処理はrailsでは基礎の基礎みたいな処理で、この処理を考えて記述できるようになるかが一つのポイントと言われいる。
ただ、ルートのURLが何か分からなくなってしまうので、その時は、ターミナルで
rake routes
と打ち込めば、pathがと対応するアクションが一目で分かるので便利。
<HTTPメソッドの記載について
form_forで HTTPメソッド(get,post,deleteなど)を指定する時に、
html{method: :post}
と記載してたが、 html{}を外しても実行結果は一緒だった。 簡単に言うと、短縮系の書き方が色々あって、TOPエンジニアは可視性が高く、直感的なコードを短く書いているらしい。
form_forメソッド
こんな記述をerbファイルに書き込みうまくいった。@userに入ったインスタンス情報をHTTPメソッドをpostに指定してurl先に飛ばす処理(データベースに飛ばすイメージ)
<%= form_for @user, url: users_path,method: :post do |f| %> <p>新規登録</p> <p>お名前:<%= f.text_field :name %></p> <p>年齢:<%= f.text_field :age %></p> <input type="submit" value="送信" > <%end%>
フォームに入力された情報をcreateアクションに飛ばして、処理されてOKでした。
<%= link_to "新規投稿画面",new_user_path %> <h1>投稿一覧</h1> <% @users.each do |user| %> <p> <%= user.name %> <%= user.age %> <%= link_to "削除", user_path(user.id), method: :delete %>
これは削除をクリックすると、HTTPメソッドをdeleteに指定したuser_pathのリンクに飛ばす表示。 今思うと、間違えないが、form_forは格納したデータをモデル(データーベース)に保存する為に飛ばしている。 ちょっとごっちゃになったけど、全然違う。