下面的代碼正在工作,但我想知道是否有更好的方法來完成此操作。這是正確的RESTful方式嗎?任何的意見都將會有幫助。其基本要求是,我需要一種方法來創建和銷燬從地方會員/ show.html.erblink_to創建並銷燬來自其他資源的資源
class Place < ActiveRecord::Base
has_many :memberships
has_many :members, :through => :memberships, :source => :user
def membership_for_user(user)
self.memberships.select{|m| m.user_id == user.id}
end
end
class User < ActiveRecord::Base
has_many :memberships
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :place
end
class MembershipsController < ApplicationController
def create
@membership = Membership.new({:user_id => current_user.id, :place_id => params[:place_id]})
unless @membership.save
flash[:notice] = "Unable to become member."
end
redirect_to place_path(params[:place_id])
end
def destroy
@membership = Membership.find(params[:id])
place_id = @membership.place_id
@membership.destroy
redirect_to place_path(place_id)
end
end
地方/ show.html.erb
<%= link_to 'Join', memberships_path(:place_id => @place.id), :method => :post %>
<%= link_to 'Cancel', @place.membership_for_user(current_user), :method => :delete %>