---
# System prepended metadata

title: Rails ただのアウトプット
tags: [rails]

---

###### tags: `rails`

Rails ただのアウトプット
===

form withメソッド
---
前提として、Viewでフォームを作成するときに使うメソッド
オプションを付けることで、メソッドやフォーマットを指定することが出来るが、今回は「form withに記入した値を空のモデルに代入する」という方法が分からなかったのでメモを残した。

要は:modelオプションとnewメソッドの使い方が分からなかったのである。

結論：@book = Book.new→このように表示するviewに対応するコントローラーに(indexのビューだったら対応するコントローラのindexメソッドの中に)記述する

これは何を表しているか。
Book.newでBookクラスの空のインスタンスを作り、@bookインスタンス変数へ代入している。
今回のコード
```
<h2>New book</h2>
<%= form_with model:@book,local:true do |f| %>
  <% if @book.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@book.errors.count, "error") %> prohibited this book from being saved:</h2>

      <ul>
      <% @book.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :title %>
    <%= f.text_field :title %>
  </div>

  <div class="field">
    <%= f.label :body %>
    <%= f.text_area :body %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
```
```
class BooksController < ApplicationController
  def top
  end

  def index
    @books = Book.all
    @book = Book.new
  end

  def create
    @book = Book.new(book_params)
    if @book.save
      flash[:notice] = "Book was successfully created."
      redirect_to book_path(@book.id)
    else
      @books = Book.all
      render :index
    end
  end

  def show
    @book = Book.find(params[:id])
  end

  def edit
    @book = Book.find(params[:id])
  end

  def update
    @book = Book.find(params[:id])
    if @book.update(book_params)
      flash[:notice] = "Book was successfully updated."
      redirect_to book_path(@book.id)
    else
      render :edit
    end
  end

  def destroy
    book = Book.find(params[:id])
    book.destroy
    redirect_to books_path
  end

  private

  def book_params
    params.require(:book).permit(:title, :body)
  end
end

```
まずは、フォームの内容を格納するために.newメソッドでモデルオブジェクトを作成し、それを変数ｆに代入。
そのfにメソッド機能を使用することでフォームのテキストエリアやボタンを作成している。
[これ参考にすれば、全てが分かる](https://hackmd.io/ATdLq6SbQGyQgr-11ik37g)


[参考](https://railsdoc.com/page/form_with)

syntaxは構文って意味
