Ruby on rails 从前端订阅的Rails

Ruby on rails 从前端订阅的Rails,ruby-on-rails,ruby,subscribe,Ruby On Rails,Ruby,Subscribe,我在表单上有一个复选框,可以告诉我用户是否想要订阅。我将把该变量作为一个布尔值,并运行一个方法,该方法将向用户订阅邮件列表,如果反之亦然,则取消订阅 我的问题是,做这项高层次工作的最佳方法是什么 使用订阅/取消订阅作为用户模型的方法,我无法找到正确的方法来实现这一点。我的表单应该提交到哪里,以便检查布尔值并运行正确的方法?在表单提交时,您将在控制器中以参数形式提交值。例如,如果是复选框,则参数[:email_subscription]可以是1或0 然后在控制器中写入逻辑,例如 if params

我在表单上有一个复选框,可以告诉我用户是否想要订阅。我将把该变量作为一个布尔值,并运行一个方法,该方法将向用户订阅邮件列表,如果反之亦然,则取消订阅

我的问题是,做这项高层次工作的最佳方法是什么


使用订阅/取消订阅作为用户模型的方法,我无法找到正确的方法来实现这一点。我的表单应该提交到哪里,以便检查布尔值并运行正确的方法?

在表单提交时,您将在控制器中以参数形式提交值。例如,如果是复选框,则参数[:email_subscription]可以是1或0

然后在控制器中写入逻辑,例如

if params[:email_subscription] == 1
     user.subscribe(true)
elsif params[:email_subscription] == 0
     user.subscribe(false)
end
然后,在您的用户模型中,您需要基于您传递的真/假变量的真实逻辑,例如:

def subscribe(var)
   [update user subscription based on var being true or false]
end

您可以将ajax请求发送给用户\控制器,或者向其提交表单

var url = '/users/:id/subscribe' 
$.ajax({
  url: url,
  method: 'POST',
  data: { channel_ids: ["1", "2"] }, 
  success: function() {
    alert('Sucess Subscribe')
  }
});
使操作在用户\控制器中订阅,或按以下方式使用更新操作

def subscribe
  @user = User.find(params[:id])
  @user.channels = paramas[:user][:channel_ids]
  @user.save
end

您可以使用koudoku gem进行订阅,阅读更多关于

您的表单应将数据发布到您的用户控制器,在那里您将检查参数并相应地订阅它们或执行任何需要的操作。