Ruby Building Web Apps with Sinatra Finishing Touches A DELETE Request

delete route sinatra

Within the delete "/signatures/:index" route, call the delete_signature method. Pass the index URL parameter as the argument.

views/show.erb
<p><%= @signature %></p>

<form method="post" action="/signatures/<%=@index %>">
  <input type="hidden" name="_method" value="delete"/>

</form>

<div>
  <a href="<%= @delete %> /signatures"></a>
</div>
guestbook.rb
require "sinatra"


def load_signature(index)
  # Code omitted for brevity
end

def save_signature(signature)
  # Code omitted for brevity
end

def update_signature(index, signature)
  # Code omitted for brevity
end

# Deletes the line at the given index and re-saves the file.
def delete_signature(index)
  lines = File.readlines("signatures.txt")
  index = index.to_i
  lines.delete_at(index)
  File.open("signatures.txt", "w") do |file|
    file.puts lines
  end
end

get "/signatures/new" do
  # Code omitted for brevity
end

get "/signatures/:index" do
  @index = params[:index]
  @signature = load_signature(@index)
  erb 'show'.to_sym
end

# DELETE ROUTE GOES HERE

#delete 



delete "/signatures/" do
  @index = signatures.delete(params[:id])
  delete_signature(params[@signature])
  redirect to ("/")
end

1 Answer

Jay McGavren
STAFF
Jay McGavren
Treehouse Teacher

Hi, Dimitri McDaniel , did you have a particular question regarding this challenge?