【理解できると便利】rails、form_withについて軽く説明

最近railsでミニアプリを作っているのですがその中で疑問になったものを紹介

form_withの使い方がいまいちよくわかっていないので、復習がてらに記事にすることにしました。そんな人たちに向けての記事になります!

form_withは理解できると便利だなと感じた僕ですw

最近はphpとか触ってみたくなってきました。

railsがが推奨しているform_with。viewのclear: both;。returnについて軽く。。。

form_with

パスを書かなくて良い(自動推測)

これが何かと言うと、createアクションに飛ばすための記述がいりません。

form_withの場合はモデルを指定してあげる事でform_withが自動推測でパスを動かしてくれます。(パスは指定することも可能)

つまりnewが来たらcreate、editが来たらupdateに飛ばすよね!って勝手にやってくれるという事です。

-# @userはeditアクションで設定しているもの。つまり情報を持っている状態
-# form_withが自動でupdateにパスを送るようになっている(パス書く必要ない)
-# model: @userは必須。パスを指定したい場合ははその後に書く。
-# その場合の例がした↓
-# = form_with model: @user, url: user_path(@user), local: true do |f|
= form_with model: @user, local: true do |f|
  .field
    = f.label :nickname
    %br/
    = f.text_field :nickname, autocomplete: "nickname"
    = f.submit

特徴

  • モデルの指定をする
  • パスは自動推測で飛んでいくので書かなくても良い
  • リモートフォームで飛ばしたくない場合は(ajax通信)local: trueを追記する

clear: both;(viewのお話)

html/cssのお話、clear:bothについて

viewを書いていてあれ?ナニコレってなったやつ。

  • floatを解除する
  • clearはfloatが無ければうまく使えない
  • 立体的に考える

clear: bath;はfloatを解除してくれる処理です。なのでclear: both;を使う際には必ずfloatが絡んでくると思っている。

float: left;と書かれた要素と等しい位置関係にある次の要素がclear: bothをしている場合はclear: bothと書かれた要素がfloat: left;を無視してviewに反映される。

他の例え方をすると(立体的に考えます)floatで浮いている要素、つまり他の要素より位置が高い。(3Dで考えると)その浮いている部分。

その部分に対して、float: left;と書かれた要素と等しい位置関係にある次の要素がclear: bothだった場合その浮いている部分にスポッと入っていく。

  • floatを解除する
  • clearはfloatが無ければうまく使えない
  • 立体的に考える

return

returnについて

def  food 
return 'ラーメン'  ここで処理が終わる 
'寿司' 
end 

puts aisatsu  #=ラーメン returnで帰ってきたものを返り値として出力する

呼び出された関数の中でreturnが書かれている場合はそこまでの処理が呼び出された関数の返り値として返されることになる。

つまり処理がreturnで終わるということです。

def  food 
'ラーメン'   
'寿司' 処理が全て読まれる
end 

puts aisatsu  #=ラーメン food関数の最後の処理の値が返り値として出力される

逆にreturnが記述されていない場合は関数の1番最後の処理結果が返り値として返される。関数の処理が全て行われる。

  • returnが書かれている場合はそこで処理が終わり返り値として返される
  • returnが書かれていない場合は関数の最後の処理結果が出力される
  • returnは省略することも出来る

こんな感じで僕の初心者備忘録でした😊

間違いあった場合は教えてもらえるとありがたいです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です