我有一个名为subscriptions的连接模型,它将用户绑定到他们订阅的组。在用户可以访问组内容之前,组所有者必须确认对该组的订阅。我正在尝试创建“确认订阅”#39;挂起订阅的按钮但是我在使用复合主键gem查找订阅时遇到了一些麻烦。我有宝石所有设置和工作。我在订阅控制器和相应的视图中创建了一个名为pending_subscriptions的自定义操作。操作中的代码是:
def pending_subscriptions
@group = Group.where(:owner_id => current_user.id)
@pending_subscriptions = Subscription.where(group_id: @group, role: "pending")
@subscription = Subscription.find([params[:user_id], params[:group_id]])
end
我收到错误:
Couldn't find Subscription with ID=, WHERE "subscriptions"."user_id" IS NULL AND "subscriptions"."group_id" IS NULL
如何正确实例化@subscription实例,以便在form_for中使用它通过put请求将params传递给更新操作?
答案 0 :(得分:0)
正如您可以在日志中清楚地看到params[:user_id]
为空(无),与params[:group_id]
相同。
所以你没有正确传递一些参数 - 请查看日志,服务器实际接收哪些参数。我猜:
@subscription = Subscription.find([params[:subscription][:user_id], params[:subscription][:group_id]])
或者,如果你使用了正确的strong_parameters:
@subscription = Subscription.find([subscription_params[:user_id], subscription_params[:group_id]])