将用户添加到Rails中的组

时间:2015-02-03 19:29:37

标签: ruby-on-rails ruby

我有一个由成员加入的组和用户模型。

当我调用代码时

基团/ show.html.erb

<%= link_to "Add to group", group_path(:group_id => @group.id, :user_id => user.id), :method => :put %>

它调用groups_controller.rb中的update方法

def update
    @group = Group.find(params[:id])
    @user = User.find(params[:user_id])
    if !@group.users.find(@user)
        @group.users << @user
    end
  end

但是引发了一个错误:

GroupsController#update中的ActiveRecord :: RecordNotFound

找不到'id'= 1 [WHERE“membership”“的用户。”group_id“=?]

我正在构建我的第一个rails应用程序,但不知道为什么会发生这种情况。谢谢!

2 个答案:

答案 0 :(得分:0)

您的群组路径使用:group_id,但控制器正在寻找:id。那些应该可能匹配。

答案 1 :(得分:0)

你有两个错误:

  1. 您需要@group找到params[:group_id],因为这就是您要发送的内容。
  2. 如果@group.users.find(@user)尚未与@user相关联,则
  3. @group会抛出错误,这不是您想要的。如果用户已经不在该群组中,您希望运行@group.users << @user unless @group.users.include? @user来添加用户。