社畜エンジニア発掘戦線

駆けだしAIエンジニア

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」も作成します。
f:id:sutokun:20180627084715p:plain

まずは「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ページを表示。
f:id:sutokun:20180627091142p:plain

殺風景でワロス

とりあえず、動いてる、入力が完了すると自動的にcreateページに遷移します、createページを編集せねば。

<p>入力は完了したが社畜が休めると思うなよ</p>
<a href="/texts/new">現実に戻る</a>

完了メッセージと入力フォームへ戻るボタンを設置しておきます。


よっしゃ、起動確認、さっきの入力フォームに適当に内容を入れて「入力」をプッシュ、
f:id:sutokun:20180627092658p:plain

f:id:sutokun:20180627092726p:plain

イケてるイケてる、「戻る」で入力フォームにも戻れます。

データベースに保存ができているかシークエルプロで見てみます。
f:id:sutokun:20180627093256p:plain

おーー、できてるできてる、これにてアプリ完成、

今回は入力と保存までしか機能をつくってませんが、表示やデータの加工、プログラミングなんでやりたきゃ何でもできます、また作りたいものができたらその過程をメモしていこうかな。