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