1

我最近添加了使用 Gibbon gem 从我的 rails 应用程序订阅人们到 mailchimp 列表的功能。

当人们注册时订阅列表是完美的,当他们登录时,它会更新他们在 mailchimp 列表上的信息(例如登录计数和 last_login_date)。

但是,还有其他用户在使用我想添加到 mailchimp 列表中的应用程序,但因为他们已经有一个帐户,他们不会再次注册,因此不会被订阅。

我正在尝试将 if 语句添加到登录页面,如果它们尚不存在,则将它们订阅到列表中,但无法弄清楚语法。

例如,如果我对其进行测试以查找我知道不存在的用户,如下所示:

Gibbon::API.lists.member_info({:id => list_id, :emails => [{:email => "d@duncanma.com"}]})

然后它返回这个:

{"success_count"=>0, "error_count"=>1, "errors"=>[{"email"=>{"email"=>"d@duncanma.com"}, "error"=>"The id passed does not exist on this list", "code"=>232}], "data"=>[]}

但我需要的只是一个真假...

我试过了:

Gibbon::API.lists.member_info({:id => list_id, :emails => [{:email => "d@duncanma.com"}]}).include("success_count"=>0)?

但这显然不起作用,因为它说include?哈希的未定义方法......

关于如何将其变为真或假布尔值的任何想法?

4

2 回答 2

0

好的,所以最终在尝试了一些不同的事情之后,我通过这样做解决了这个问题:

begin
  @list_member = Gibbon::API.lists.member_info({:id => list_id,
                             :emails => [{:email => current_user.email}]
                             })
  if @list_member["success_count"] = 1
    Gibbon::API.lists.update_member({:id => list_id,
              :email => {:email => current_user.email},
              :merge_vars => {:MMERGE4 => current_user.trips.count,
              :MMERGE13 => Date.today,
              :MMERGE5 => current_user.miles_sailed}
              })
  elsif @list_member["success_count"] = 0
    Gibbon::API.lists.subscribe({:id => list_id,
              :email => {:email => current_user.email},
              :merge_vars => {:FNAME => current_user.name,
              :LNAME => current_user.last_name,
              :MMERGE3 => current_user.login},
              :double_optin => false})
  end
rescue Gibbon::MailChimpError => e
  return redirect_to root_path, :flash => {error: e.message}
end
于 2015-05-27T11:21:38.603 回答
0

如果您的目标只是发现电子邮件是否在您的列表中,那么最后一个答案效果很好。如果您的最终目标是“创建或更新”,那么您只需将 update_existing 参数传递给 subscribe 调用。

有关详细信息,请参阅API 文档。/lists/subscribe

于 2015-05-27T20:26:53.467 回答