Railsでアプリケーションを作る6(機能の実装)
おつかれさまです。
ちょっと間が空きましたが、Railsアプリの続きを作成、具体的に機能を実装していきます。
まずはデータの入力機能、コントローラに記述した「new」アクションのコード、
def new end
このコード内に、データ入力時に内容を引き渡す変数を設定します。
def new @text_new = Text.new end
変数の前に@をつけるかどうかは、ビューファイルでこの変数を使うかどうか、今回入力のビューファイルでこの変数を使うので@付き変数が必要。「Text.new」はデータベースのTextテーブルに新しくデータを追加するからしくよろーって感じの内容。入力内容は一度「text_params」という変数に格納されます、
@text_new → text_params
次に、入力データ「text_params」は「title」、「content」の2つなので怪しいモノではありません、お願いしますぅ、という許可を仰ぐコードが必要になります。
def new @text_new = Text.new end private def text_params params.require(:text).permit(:title, :content) end
この辺あんまり分かりません、呪文です。
データ処理の流れとしては、「@text_newにデータを入力」、「@text_newからtext_paramsに内容が渡る」、次に「この内容をデータベースに保存する」という処理が必要です。
入力したデータの内容をデータベースに記録するにはもうひとつ「create」というアクションが必要です、とりあえずこのアクションのコードを「new」のあとに記述。
def new @text_new = Text.new end def create Text.create(text_params) end private def text_params params.require(:text).permit(:title, :content) end
Textテーブルにtext_paramsの内容を新たにcreateする、というコードです。
これで入力機能の中身が完成です、次はブラウザに表示する入力画面(ビューファイル)の編集です。
前回、「new.html.erb」を作成しましたが、createアクションを追記したので「create.html.erb」も作成します。
まずは「new.html.erb」の編集です、「社畜の朝は早い」は消します。
<% form_for @text_new do |f| %> <% end %>
@test_newに新しくデータを入れるよーって内容です、これはRubyコードなのでhtmlファイルに記述するときは<%〜%>が必要です、終わりはendで括ります。@test_newをfという変数でおき直して、endの中で使います、って感じ。
具体的な入力フォームの記述です。
<%= form_for @text_new do |f| %> <%= f.text_field :title %> <%= f.text_area :content %> <%= f.submit "入力" %> <% end %>
HTMLでも書けますが、<%=〜%>で記述することにより長い記述をまとめてくれます。<%〜%>に=がつくかどうかはRubyコードの内容をビューに表示するかどうか。
どんな感じか見てみます、サーバを起動して、newページを表示。
殺風景でワロス
とりあえず、動いてる、入力が完了すると自動的にcreateページに遷移します、createページを編集せねば。
<p>入力は完了したが社畜が休めると思うなよ</p> <a href="/texts/new">現実に戻る</a>
完了メッセージと入力フォームへ戻るボタンを設置しておきます。
よっしゃ、起動確認、さっきの入力フォームに適当に内容を入れて「入力」をプッシュ、
イケてるイケてる、「戻る」で入力フォームにも戻れます。
データベースに保存ができているかシークエルプロで見てみます。
おーー、できてるできてる、これにてアプリ完成、
今回は入力と保存までしか機能をつくってませんが、表示やデータの加工、プログラミングなんでやりたきゃ何でもできます、また作りたいものができたらその過程をメモしていこうかな。