I've got an Events model and a Users model joined through an Attendees model. I have figured out how to "Attend" an event as an authenticated user. But what I can't figure out is a nice way to "Withdraw" from an event. I'm sure this is something trivial that I'm missing but what better way to make an entrance into StackOverflow than to ask something trivial? Oh I have been searching railscasts and SO for hours...
Thanks!
views/events/show.html.erb
<p><strong>Attendees: </strong>
<ul>
<% for attendee in @event.users %>
<% if attendee.username == current_user.username %>
<li><strong><%= attendee.username %></strong>
<%= link_to 'Withdraw From Event', withdraw_event_path(@event.id), :method => :post, :class => 'btn btn-danger' %>
<%= link_to 'Destroy', @attendee, confirm: 'Are you sure?', method: :delete, :class => 'btn btn-danger' %>
</li>
<% else %>
<li><%= attendee.username %></li>
<% end %>
<% end %>
</ul>
</p>
/controllers/events_controller.rb
def attend
@event = Event.find(params[:id])
current_user.events << @event
redirect_to @event, notice: 'You have promised to attend this event.'
end
def withdraw
# I can't get this to work
redirect_to @event, notice: 'You are no longer attending this event.'
end
models/event.rb
class Event < ActiveRecord::Base
attr_accessible :name, :location
belongs_to :users
has_many :attendees, :dependent => :destroy
has_many :users, :through => :attendees
models/user.rb
class User < ActiveRecord::Base
has_many :events
has_many :attendees, :dependent => :destroy
has_many :events, :through => :attendees
models/attendee.rb
class Attendee < ActiveRecord::Base
belongs_to :event
belongs_to :user
attr_accessible :user_id, :event_id
# Make sure that one user cannot join the same event more than once at a time.
validates :event_id, :uniqueness => { :scope => :user_id }
end