Nitin Rajan
Nitin Rajan

Reputation: 307

explain what's wrong with delete and destroy?

Not able to delete the data stored in the database pls help?

this is my sages_controller.rb

def delete
   @sage = Sage.find(params[:id])
end

  def destroy
    Sage.find(params[:id]).destroy
    redirect_to '/thanksss'
  end

this is my delete.html.erb

<%= form_for @sage do |f| %>
    <%= f.label :Name %>
    <%= f.text_field :Name %>
    <br/>
    <%= f.label :Email %>
    <%= f.text_field :Email %>
    <br/>
    <%= f.label :Address %>
    <%= f.text_field :Address %>
    <br/>
    <%= f.label :Number %>
    <%= f.text_field :Number %>
    <br/>
    <%= f.submit 'Delete' %>
<% end %>

this is my routes.rb

get 'sages/delete/:id'=> 'sages#delete'
delete 'sages/delete/:id'=> 'sages#destroy'

Upvotes: 0

Views: 60

Answers (2)

rick
rick

Reputation: 1705

You can do something like this, Change your button to link,

<%= link_to "delete", @sage, :method=>:delete %>

And change your routes file to,

resources :sages,only: [:new,:create,:edit, :update, :delete]
get 'sages/delete/:id'=> 'sages#delete'

Change your delete method like,

def delete
  @sage = Sage.find(params[:id])
  destroy
end

Upvotes: 0

maximus ツ
maximus ツ

Reputation: 8065

You don't have to create form for this. button_to should work

<%= button_to "delete", @sage, :method => :delete, :class => :destroy %>

this will internally generate a form with DELETE method, opposed to default GET method like below,

<%= form_for @sage, :method => :delete do  %>   

Upvotes: 1

Related Questions