項目の削除の機能を追加する
手順は
1,削除を行う行を指定する釦を設置する
2,削除を行う処理を追加する
3,動作を確認する
となります
1,削除を行う行を指定する釦を設置する
各行に釦を設置し、行を指定するIDを埋め込む
app.rb
に、釦のフォームを設置する
<form method="post" action="del"> <td><input type="submit" value="削除"></td> <input type="hidden" name="id" value="<%= us.id %>"> <input type="hidden" name="_method" value="delete"> </form>
get ‘/’ do
を以下にする
get '/' do
@usrs = User.all
erb %{
<html>
<head>
  <meta charset="utf-8" />
  <title>Test</title>
</head>
<body>
  <table border>
    <tr>
      <th>名前</th>
      <th>メールアドレス</th>
    </tr>
    <% @usrs.each do |us| %>
    <tr>
      <td><%= us.id %></td>
      <td><%= us.username %></td>
      <td><%= us.mailaddres %></td>
 <form method="post" action="del">
 <td><input type="submit" value="削除"></td>
  <input type="hidden" name="id" value="<%= us.id %>">
  <input type="hidden" name="_method" value="delete">
 </form>
    </tr>
 <% end %>
<form method="post" action="new">
 <tr>
  <td><input type="submit" value="登録"></td>
  <td><input type="text" name="username"></td>
  <td><input type="text" name="mailaddres"></td>
 </tr>
</form>
</table>
</body>
</html>
}
end
で、起動し削除釦を押してみる
cd cd sina rbenv shell 2.2.5 bundle exec ruby app.rb
ブラウザ(Firfox)から
http://localhost:4567/
エラーとして
Try this: delete '/del' do "Hello World" end
と、表示される
delete ‘/del’ do
を追加する
2,削除を行う処理を追加する
delete '/del' do usrs = User.find(params[:id]) usrs.destroy redirect '/' end
修正内容を追加すると
#coding: utf-8
 
require 'active_record'
require 'mysql2'
require 'sinatra'
require 'sinatra/reloader'
 
# Import files for database
ActiveRecord::Base.configurations = YAML.load_file('database.yml')
ActiveRecord::Base.establish_connection(:development)
 
class User < ActiveRecord::Base
end
 
get '/' do
@usrs = User.all
erb %{
<html>
<head>
  <meta charset="utf-8" />
  <title>Test</title>
</head>
<body>
  <table border>
    <tr>
      <th>名前</th>
      <th>メールアドレス</th>
    </tr>
    <% @usrs.each do |us| %>
    <tr>
      <td><%= us.id %></td>
      <td><%= us.username %></td>
      <td><%= us.mailaddres %></td>
      <form method="post" action="del">
      <td><input type="submit" value="削除"></td>
       <input type="hidden" name="id" value="<%= us.id %>">
       <input type="hidden" name="_method" value="delete">
       </form>
    </tr>    
</tr>
    <% end %>
<form method="post" action="new">
 <tr>
  <td></td>
  <td><input type="text" name="username"></td>
  <td><input type="text" name="mailaddres"></td>
  <td><input type="submit" value="登録"></td>
 </tr>
</form>
</table>
</body>
</html>
}
end
post '/new' do
  usr = User.new
  usr.username = params[:username]
  usr.mailaddres = params[:mailaddres]
  usr.save
  redirect '/'
end
delete '/del' do
  usrs = User.find(params[:id])
  usrs.destroy
  redirect '/'
end
となりる
3,動作を確認する
app.rbを起動し
cd cd sina rbenv shell 2.2.5 bundle exec ruby app.rb
ブラウザ(Firfox)から
http://localhost:4567/
により、削除釦を押してみる
対象項目の削除ができた