#12 新規作成フォームを作ろう

index.html.erbのヘルパーメッソドが間違ってたので修正

✕link_To
〇link_to

new.html.erb　に改行タグを追加した。
#13 データを保存してみよう

projects/newの入力フォームから入力されたものをPOSTして projects.create というアクションを作成して保存していく。

①Project.new(project_parms)でフォームから渡されたものをいれてあげる。
※プライベイト関数 project_parms　を作成して一度、フィルタリングしてから渡すのが最近の主流。
　昔は、してなかったがセキュリティの関係上こうやってやるらしい。

②project.save
　入力されたものをセーブ。

③redirect_to　パス
　指定したパスにリダイレクトする。
　今回は、projects_pathで index　画面にリダイレクト。
#14 Validationを設定しよう

今のままだと、空白でも追加できてしまうので、バリデーションという仕組みを使ってルールに沿う場合は登録できないようにする。

①貼りてーションはmodelsの中で定義する。
models/project.rbを編集。
　
空欄があるかどうかは、presence: で制御する。
tureにすれば空欄の時は登録されなくなる。

②入力されなかった時に inedex画面ではなく、new画面に戻るようにする。
controllores/projects_controller.rbで定義しなおす。

if文で save されたら　index画面へ、されなかったら new画面へリダイレクトするように定義。
#15 エラーメッセージを表示しよう

バリデーションルールによってエラーメッセージを出力するようにする。

①new.html.erb にif文で errors　があったら messageを吐き出す様にする。

②models/project.rbのバリテーションの定義で出力させたいメッセージを設定する。

※3文字以下もエラーになるようにバリテーションを追加。
#16 編集フォームを作ろう

編集フォーム画面を作成。

①編集に関するルーティングは edit　になる。
②contorller.rbで edit アクションを定義。
③index.html.erbに編集フォーム画面へのパスを追記して作成。
④new.html.erbをコピー、リネームして編集フォーム画面として利用。
※<h1>のタイトル変えたくらい。
※Railsは、form_forとかでサブミットボタンの名前を変更してくれてスマート。
#17 データを更新しよう

①controller.rbで update　アクションの定義。
②edit / new 画面の入力フォームを共通パーツにする。
※パーシャルというらしい。
_form.html.erb（※文頭に_を付ける規則)ファイルを作成し入力フォーム部分を書く。
render 'form'　と出力させたいところに書けば利用可能。
#18 データを削除しよう

projectを削除できるようにする。

①index.html.erbに削除のリンクを作成。
　・mehtod: :delete でdestoryアクションに結びつける。
　・data: {confirm: "表示させたい言葉" } で確認画面をだす。

②destroyアクションを作成。
　controller.rbで定義。
#19 before_actionを使ってみよう

before_action
　定義したものに関して、どのアクションを実行するにも、その前に必ず実行されるようになる。

※only:[アクション名]で、実行するアクションを限定も出来る。

①set_project を作成して何回もでてくる「@project =
Project.find(params[:id])」をbefore_actionにした。

・set_projectはpravite内で定義。