form_withの使い方
-2023年02月27日-
入力された情報をデータベースに保存しない時
1 | <%= form_with url: "パス" do |form| %> |
入力された情報をデータベースに保存する時
modelオプションを使う場合、form_withの引数にはモデルクラスのインスタンスを指定します。
モデルクラスのインスタンスとは保存したいテーブルのクラスのインスタンスのことです。
今回はusersテーブルに新たにレコードを作成したいので、コントローラー側で下記のように記述します。
1 | <%= form_with model: @user do |form| %> |
2 | <%= form.text_field :name %> |
editアクションの時は下記のようになります。すると、type="hidden"の要素にvalueとしpatchが生成されます。
コントローラーで、モデルインスタンスの値が『空』なのか『それとも元々』
2 | @user = User.find(params[ :id ]) |
ネストをしているときの記述
このようにルーティングでネストをしているときの記述を示します。
1 | Rails.application.routes.draw do |
3 | resources :comments , only: [ :create , :destroy , :edit , :update ] |
コメントは必ずいずれかの記事に紐づいているので、どの記事のコメントなのかという情報(親情報)が必要になります。
3 | @article = Article.find(params[ :article_id ]) |
8 | @article = Article.find(params[ :article_id ]) |
9 | @comment = Comment.find(params[ :id ]) |
2 | <%= form_with model: [ @article , @comment ] do |form| %> |
3 | <%= form.text_field :text %> |