Ruby
Rails
Railsガイド

初心者がRailsガイドを1から100まで読んでみる Railsをはじめよう編その3 パラメータとアクション

5.3.記事を作成する

さっきでたUnknown actionエラーを回避しよう。
スクリーンショット 2018-09-19 22.10.57.png

Articlesコントローラに'create'というアクションがありませんと言っているので、追加してあげよう。
(このエラー内容に沿って修正していくだけでも正解に近づく感じ、レールの上に乗っているみたい)

articles_controller.rb
class ArticlesController < ApplicationController
  def new
  end

  def create
  end
end

よし、もう一回Save Articleボタン押すぞ
スクリーンショット 2018-09-21 0.36.59.png


かたまったんやけど…

「修正後のフォームを再送信すると、おそらくページには何の変更も表示されないでしょう。しかし心配は無用です。Railsのアクションは、レスポンスの種類を指定しない場合は204 No Contentをデフォルトで返します。ここではcreateアクションを追加しただけで、レスポンスの振る舞いについて何も指定していませんので、新しい記事はcreateアクションによってデータベースに保存されているはずです。」
だって。
まだ実装してないからだけど、サイレントだとユーザに優しくないねえ。
ここでちょっくらログをみてみよう。
実はここにログが出力されている。
スクリーンショット 2018-09-21 0.38.00.png

スクリーンショット 2018-09-21 0.38.12.png

開いてみるとこんなログが
スクリーンショット 2018-09-21 0.40.28.png

ほうほう。これでデータベースに保存されていることになるの?
でもパラメータとして記事の内容が送られている感じはする。
createアクションをいじくって、パラメータの中身を確認してみよう。

articles_controller.rb
class ArticlesController < ApplicationController
    def new
    end

    def create
        render plain: params[:article].inspect
    end
end

render plain: params[:article].inspectというのをcreateアクションの中に書いた。
render:なんか簡単にviewを表示できるメソッドらしい。百聞は一見にしかず。

スクリーンショット 2018-09-21 0.57.37.png

plain:と書くことで、単純にその後ろのparams[:article].inspectの内容をブラウザ上に表示できるらしい。
paramsの中にはフォームで送信した中身が詰め込まれているみたい。

ここで初めてアクションの中に処理を書きました。(といってもデバッグ用の様なものだけど)
今までは空っぽのアクションを呼び出して、それに対応するビューを出してただけだけど、パラメータとしてアクションに送った内容をアクション内でいじくれることが今回わかった。
これって結構重要だよね。

おーなんとなく仕組みがわかってきたぞ。

その4
https://qiita.com/Natsuki_on_Rails/items/5db500e27b330b7ad0f3

参考

Railsガイド
https://railsguides.jp/