0

我又错过了什么...

我正在使用mcapi2并且可以使用以下行在控制器中订阅用户而没有什么问题:

@response = @mcMailer.lists.subscribe("XXXXXXXX", "email" => @user.email)

但是,当我尝试使用以下方法更新用户(现在已经获得了他们的名字)时:

@response = @mcMailer.lists.update_member("XXXXXXXX", "email" => @user.email, "merge_vars" => {"FNAME" => params[:stat][:firstname]})

我不断收到以下错误:

ArgumentError (wrong number of arguments (2 for 3..5)):
app/controllers/stats_controller.rb:135:in `upload'

我想我已经尝试了所有格式,但似乎无法让它更新名字,所以任何帮助将不胜感激。

更新:

仍然没有运气。

我查看了 mailchimp-api 代码,它似乎定义为 update_member :

def update_member(id, email, merge_vars, email_type='', replace_interests=true)
_params = {:id => id, :email => email, :merge_vars => merge_vars, :email_type => email_type, :replace_interests => replace_interests}
return @master.call 'lists/update-member', _params
end

而且我的代码是以下所有可能的变体(除了它假设的正确的变体):

  mergeVars = [:FNAME => params[:stat][:firstname]]
  @response = @mcMailer.lists.update_member("XXXXXXXX", "email" => @user.email, mergeVars)

邮件 chimp-api 在 def 之前有以下内容:

@param [Array] merge_vars array of new field values to update the member with.  See merge_vars in lists/subscribe() for details.

但我仍然不知道我哪里出错了。

4

2 回答 2

1

好吧,我在这里找到了一篇文章,建议我尝试以下方法,它似乎奏效了。老实说,我仍然不明智,但把它放在这里以防它帮助其他人。

@response = @mcMailer.lists.update_member("XXXXXXXX", {email: @user.email}, {'FNAME' => params[:stat][:firstname], 'LNAME' => ""} )

也许是包含 LNAME 字段?大括号?谁知道!

于 2014-09-28T22:22:33.240 回答
0

它是这样工作的:

@response = @mcMailer.lists.update_member( "XXXXXXXX", @user.email, {"FNAME" => params[:stat][:firstname]})

第二个和最后一个参数不应该是键/值对,而只能是值。

于 2014-09-25T03:11:21.013 回答