データの入力処理
入力ページの追加
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."