我最近添加了使用Gibbon gem从我的rails应用程序订阅mailchimp列表的功能。
完美地订阅人们在注册时列出,当他们登录时,它会在mailchimp列表上更新他们的信息(例如登录计数和last_login_date)。
然而,还有其他用户使用我要添加到mailchimp列表的应用程序,但由于他们已经拥有一个帐户,他们不会再次注册,因此无法订阅。< / p>
我尝试将if语句添加到登录页面,如果它们已经不存在,则会将它们订阅到列表中,但无法弄清楚语法。
例如,如果我测试它以找到我知道不存在的用户,就像这样:
{"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?
但这显然不起作用,因为它表示哈希的未定义方法{{1}} ...
关于如何将它变为真或假布尔值的任何想法?
答案 0 :(得分: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
答案 1 :(得分:0)
如果您的目标只是发现电子邮件是否在您的列表中,那么最后一个答案效果很好。如果您的最终目标是&#34;创建或更新&#34;,那么您只想将update_existing参数传递给订阅调用。
有关详细信息,请参阅API Docs for /lists/subscribe
。