日別アーカイブ: 2021年11月8日

railsのまとめ4(ミニQ&Aサイトを作るその2)

その3から続きます

11:新規質問機能の投稿View

app/views/questions/new.html.erbを↓のように記述

<div class="col-md-4 offset-md-4">
  <!--中央に寄せる設定-->
    <h2 class="text-center">New question</h2>
  <%= form_with model: @question, local: true do |f| %>
    <div class="form-group">
      <label>Name</label>
  <!--テキストフィールドをつける-->
  <%= f.text_field :name, class: "form-control" %>
    </div>
  <!--テキストフィールドをつける-->
    <div class="form-group">
      <label>Title</label>
   <%= f.text_field :title, class: "form-control" %>
    </div>
  <!--テキストフィールドをつける-->
   <div class="form-group">
     <label>Content</label>
   <%= f.text_field :Content, class: "form-control" %>
     </div>
  <!--saveボタンを付ける-->
     <div class="text-center">
   <%= f.submit "Save", class: "btn btn-primary" %>
     </div>
   <% end %>
</div>

form_with,text_field,submitなどのメソッドはフォームヘルパーと呼ばれフォームに関するhtmlを自動的に生成してくれます。

form_with
,はrails5.1になってからでてform_forなどは非推奨になったので移行しましょう。
model: @question
コントローラから渡されたクエスチョンモデルのモデルオブジェクトを設定
local: true 非同期通信を使ったフォームを無効にしている

次に動作確認をしたいのでコントローラからビューに
Questionモデルのインスタンスを渡す機能の実装

app/controllers/questions_controller.rbに↓のように記述

def new
  @question = Question.new
end

Questionモデルの新規インスタンスを生成して@questionに代入して
app/views/questions/new.html.erbに渡してform_withで利用しています。

form_withタグによって↓生成された
<form action=”/questions” accept-charset=”UTF-8″ method=”post”>
慣れるまではフォームヘルパーによってどんなHTMLタグができるか確認しましょう!
続きを読む