在销毁连接表记录时无法找到没有ID的Group

时间:2017-06-15 15:45:05

标签: ruby-on-rails

我目前通过会员资格加入了用户和群组。我正在尝试实现一个允许用户离开组的按钮,但我不断收到错误,它找不到没有id的组。

user.rb

  has_many :memberships
  has_many :groups, through: :memberships

group.rb

  has_many :memberships
  has_many :users, through: :memberships

membership.rb

  belongs_to :user
  belongs_to :group
  validates :user_id, presence: true
  validates :group_id, presence: true

用户可以很好地加入会员,该按钮有效。当我试图离开小组时,问题就出现了。这是我的离开按钮

<div id="join_form">
<% if current_user.groups.exists?(@group) %>
  <%= render 'memberships/leave' %>
<% else %>
  <%= render 'memberships/join' %>
<% end %>
</div>

和部分离开

<%= form_for(current_user.memberships.find_by(group_id: @group.id),
             html: { method: :delete }) do |f| %>
  <%= submit_tag "Quit #{@group.title}" %>
<% end %>

最后,我的memberships_controller.rb

  def create
    @user = current_user
    @group = Group.friendly.find(params[:group_id])
    Membership.create!(user_id: @user.id, group_id: @group.id)
    redirect_to @group
  end

  def destroy
    @group = Group.friendly.find(params[:group_id])
    @membership = current_user.memberships.find_by(group_id: @group.id)
    @membership.delete
    redirect_to groups_path
  end

为什么群组页面没有传递其ID?

更新 我在会员页面上收到错误,该错误应在删除后重定向到组索引。因为它显示正确的会员ID,它必须意味着它知道组ID,对吧?那么为什么我会收到这个错误?

https://workspace-user.c9users.io/memberships/20

再次更新:正确传递参数。我看到成员资格组ID是14,它允许rails查找20的成员资格ID。那么为什么Couldn't find Group without an ID消息?在控制台中,成员身份记录仍然存在,因此删除不会发生。

{"utf8"=>"✓",
 "_method"=>"delete",
 "authenticity_token"=>"njFy1J8ArpUG1qmfOVMmxpHGX/hMES7tbdGxPCn9fUHk79zcboURDKFprSA3RbGK6RNUDm8+pPjp1WFFzVBAPg==",
 "membership"=>{"group_id"=>"14"},
 "commit"=>"Quit Fitness Fam",
 "id"=>"20"}

0 个答案:

没有答案