I am trying to implement a system where in order to keep track of a projects progress, you can tag it with various versions (like the tagging feature on Stack Overflow. I am following along with Rails 3 book in action project, Ticketee.) I am trying to implement a asynchronous request to delete a tag from a ticket, but for some reason it's not deleting properly. Here is my code:
routes.html.erb
resources :tickets do
resources :comments
resources :tags do
member do
delete :remove
end
end
end
tags_controller.rb
def remove
@ticket = Ticket.find(params[:ticket_id])
if can?(:tag, @ticket.project) || current_user.admin?
@tag = Tag.find(params[:id])
@ticket.tags -= [@tag]
@ticket.save
render :nothing => true
end
end
views/tags/remove.js.erb
$('#tag-<%= @tag.name.parameterize %>').remove();
views/tags/_tag.html.erb
<span class='tag' id='tag-<%= tag.name.parameterize %>'>
<% if can?(:tag, @ticket.project) || current_user.admin? %>
<%= link_to "x",
:remote => true,
:url => remove_ticket_tag_path(@ticket, tag),
:method => :delete,
:html => { :id => "delete-#{tag.name.parameterize}" } %>
<% end %>
<%= tag.name %>
</span>
When I click the "x" link it refreshes the page, but doesn't actually remove it. Any idea why? I have posted the code that I think is relevant... let me know if you need more.