データの入力処理

入力ページの追加

app/views/nicknames/create.html.erbを下記に書き換え

<%= form_for Nickname.new do |f| %>
  <%= f.label :本名 %>
  <%= f.text_field :name %>
  <%= f.label :ニックネーム %>
  <%= f.text_field :nickname %>
  <%= f.label :コメント %>
  <%= f.text_area :comment %>
  <%= f.submit :登録%>
<% end %>

そして、入力した情報を送る仕組み(post)を利用するために config/routes.rbの下記の部分にpostを追加します。

  get 'nicknames/create'
  post 'nicknames' => 'nicknames#add'

ここで、ブラウザで確認すれば、 http://localhost:3000/nicknames/createでフォームが表示される。 ただし、ボタンをクリックしても受け取る側であるaddがないためエラーが表示されます。

入力されたデータの処理

アクションaddを追加するために、 app/controllers/nicknames_controller.rb を開き、下記を追加します。

def add
    @nickname = Nickname.new
    @nickname.name = params[:nickname][:name]
    @nickname.nickname = params[:nickname][:nickname]
    @nickname.comment = params[:nickname][:comment]
    @nickname.save
        redirect_to '/nicknames/show'
end

ここで、ブラウザで確認すれば、 http://localhost:3000/nicknames/createでフォームが表示され、 入力されたデータも処理されます。

データ削除機能の追加

データ削除ページの作成

データ削除機能を追加してみたいと思います。まず、一覧を表示させるため、showと同様の処理を行うように設定します。app/controllers/nicknames_controller.rbを開いてshowと同様に ハッシュを設定し、app/views/nicknames/delete.html.erbの内容もshowと同様にしましょう。そして、http://localhost:3000/nicknames/deleteでshowと同様の処理となっているか確認してみましょう。

データ削除機能の追加

では、app/views/nicknames/delete.html.erbを下記のように修正し、「削除」を追加します。

<h1>ニックネーム削除</h1>
<% @nicknames.each do |nickname| %>
<h2>
<%= nickname.nickname %>
<%= link_to '削除', contoroller: "nicknames", action: 'del', id: nickname.id, name:{confirm: "本当に削除しますか?"} 
%>
</h2>
<p>
本名:<%= nickname.name %>、コメント: <%= nickname.comment %>
</p>
<% end %>

そして、「削除」をクリックした時のアクション「del」を追加します。 app/controllers/nicknames_controller.rbを開いて、下記のように 「del」の処理を追加します。

  def del
    @nickname = Nickname.find(params[:id])
    @nickname.destroy
    redirect_to '/nicknames/delete'
  end

さらに、どのニックネームの「削除」ボタンをクリックしたのかを「del」に 知らせるため、下記の1行をconfig/routes.rbに追加し、動作確認してみましょう。

  get 'nicknames/del' => 'nicknames#del'

ここまでの保存

ここまでうまく動作していれば記録しておきましょう。

git add .
git commit -m "Delete is added."