「データの新規作成方法が分からない」、「データの新規作成方法をもっと知りたい」などお悩みを抱えている方はいないでしょうか?
このページではnewアクションとcreateアクションを用いてデータの新規作成を行っていきたいと思います。
是非、最後まで読んで頂けたら幸いです。
目次
1.new.html.erbの作成
このページはWebアプリケーションの作成、Modelの作成、indexアクションの作成を終えているという前提でお話を進めていきます。
データを新規作成する場合、フォームからデータを送信して保存するという流れになります。
今回は「new」アクションと「create」アクションを使用してデータの新規作成を行います。
「new」アクションでフォームを表示し、フォームからデータ送信すると「create」アクションでデータ保存を行うという流れになります。
では、「new.html.erb」というテンプレートを作成しましょう。
「views」の「posts」フォルダ内に「new.html.erb」という名前のファイルを作成して下さい。
以下のようにソースコードを記述しましょう。
上記では「form_for」というフォームヘルパーを使用してフォームを生成しています。
「form_for」というメソッドを詳しく見てみましょう。
form_for( モデル , url:{controller: コントローラー名 , action: アクション名} )
一つ目の引数
「form_for」の一つ目の引数はモデルのインスタンスを指定しています。
モデルのインスタンスは、newアクションメソッドでインスタンス変数として用意します。
インスタンス変数は「2.controllerにnewアクション・createアクションを追記」で用意します。
二つ目の引数
「form_for」の二つ目の引数はフォームの送信先を指定しています。
フォームの送信先はurlで指定しています。
urlの値はハッシュになっており、controllerとactionという値が用意されています。
このようにcontrollerとactionを指定することでどのcontrollerのどのactionにフォーム送信を行うのか指定することができます。
「form_for」の後はdoの後に用意されている変数に代入されるオブジェクトの中からメソッドを呼び出してフォームのコントロールを生成していきます。
ここでは「text_field」と「submit」というメソッドを呼び出しています。
Postモデルにはid、created_at、updated_atというカラムがありましたが、これらのカラムは自動的にデータが保存される仕組みになっているので、入力フォームを用意する必要はありません。
2.controllerにnewアクション・createアクションを追記
上記で「new.html.erb」というテンプレートが完成したので、controllerにnewアクションとcreateアクションを追記していきましょう。
それでは以下のように「posts_controller.rb」にnewアクションとcreateアクションを記述していきましょう。
データの新規作成はモデルクラスのcreateメソッドを使用します。
createの引数にはpost_paramsが指定されています。
post_paramsとは何なのでしょうか?
一番下にpost_paramsがありますが、このメソッドの戻り値が引数に指定されているということになります。
post_paramsの前に「private」と記載されていますが、これは何なのでしょうか。
これはメソッドのアクセス制限をするためのものとなっています。
クラス内に用意したメソッドはインスタンス作成を行えば、いつでも呼び出すことができてしまいます。
そこでprivateを使用することで、メソッドのアクセス制限を行うことができます。
次にpost_paramsの中身を見ていきましょう。
require(:post)ではparamsの中に指定の値が存在するかをチェックしています。
ここではparams[:post]という値があるかどうかをチェックしています。
戻り値では「permit」というメソッドが呼び出されています。
permitメソッドは引数に指定されている項目が用意されているかをチェックするものとなっています。
つまり、post_paramsはparams「:post」の中に「:name」、「:content」という項目が用意されているかをチェックしていたのです。
このように送信されてきたparamsの状態をチェックし、フォームの内容が正しかった場合、モデルの作成、保存ができるという仕組みになっています。
3.ルーティング設定
次にルーティング設定を行いましょう。
「routes.rb」に以下のソースコードを追記しましょう。
ここで一つ注意点があります。
必ず、「get ‘posts/:id’, to: ‘posts#show’」の前に「get ‘posts/new’」と「post ‘posts/new’, to: ‘posts#create’」を記述するようにしましょう。
これを逆に記述して「posts/new」にアクセスすると「posts/:id」が先に認識され、エラーが発生してしまいます。
そのため、記述する順番を間違えないようにしましょう。
これでデータ新規登録ができるようになったので、「posts/new」にアクセスしてデータ登録を行っていきましょう。
「posts/new」にアクセスすると以下のように画面表示されます。
ここでは「タロウ」という名前、「Good morning!」という投稿内容で新規登録しましょう。
新規登録を行うと「index.html.erb」にしっかりと反映されました。
4.Ruby on Railsを学ぶことができるオススメの教材
Ruby on Railsを学習している皆様にオススメの教材をご紹介させていただきます。
現場で使える Ruby on Rails 5速習実践ガイド
以下の本はRuby on Railsの学習を一通り終えてある程度知識を身につけた方にオススメしたい本です。
「現場で使える Ruby on Rails 5速習実践ガイド」は現場で実際にどのように使われているのかという視点も交えて解説されています。
そのため、初心者の方が次のステップに進むために最適な本となっていますので、オススメです。
これらの本で是非学習を進めてみてはいかがでしょうか?
レベル別におすすめの本も紹介していますので、どのような本がオススメか知りたい方はこちらもご覧になって下さい。

Udemy
UdemyではRuby on Railsを学ぶことができる講座を多数取り扱っています。
以下の記事でRuby on Railsを学ぶことができるオススメの講座をまとめていますので、よかったらご覧になって下さい。

プログラミングスクール
TechAcademy、WebCamp、CodeCamp、Tech CampなどでRuby on Railsを学ぶことができます。
それぞれ無料体験も行っているので、どのようなものか試してみるのもいいでしょう。
以下の記事で各プログラミングスクールをまとめているのでこちらもよかったらご覧になってください。









5.ポイント
・データの新規登録はnewアクションとcreateアクションで行います
・paramsを利用したデータ保存の書式
モデルのクラス.create(パーミッション済みのparams)
・パーミッションの書式
params.require(モデルのクラス).permit(項目)