通过remote_form删除关联的记录

时间:2010-12-02 05:50:25

标签: ruby-on-rails ruby model associations

我在rails应用程序上构建了一个ruby,可以让用户跟踪他们的锻炼情况。用户has_many锻炼。此外,如果用户是健身房所有者,则可以创建一个盒子(健身房)。然后,用户可以通过Membership资源与该框关联。

我使用/views/boxes/show.html.erb中的远程表单为current_user创建了该关联:

<% remote_form_for Membership.new do |f| %> 
  <%= f.hidden_field :box_id, :value => @box.id %>
  <%= f.hidden_field :user_id, :value => current_user.id %>
  <%= submit_tag "I am a member of this box" , :class => '' %>
<% end %>

我现在想让current_user能够删除它们的关联。如何构造链接/表单以及memberships_controller销毁操作应该是什么样的?

如果有帮助,下面是我的关联列表: 用户

class User < ActiveRecord::Base
  has_many :boxes
  has_many :workouts, :dependent => :destroy
end

锻炼

class Workout < ActiveRecord::Base
  belongs_to :user
  belongs_to :box
end

class Box < ActiveRecord::Base
  belongs_to :user
  has_many :users, :through => :memberships
  has_many :workouts, :through => :users
  has_many :memberships
end

成员

class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :box
end

1 个答案:

答案 0 :(得分:0)

完成建议here的更改后,假设您已使用以下代码获取current_user和框的成员资格,

@membership = current_user.memberships.for_box(box).first

为用户创建一个链接,以删除成员资格,如下所示。

link_to 'Delete Membership', membership_path(@membership), :method => :delete

成员资格控制器应具有类似于以下内容的destroy方法。

def destroy
  @membership = Membership.find(params[:id])
  @membership.destroy
end

这假设您的会员控制器很安静,并且您的路线中有map.resources :memberships