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]})

2 番目と最後のパラメーターは、キーと値のペアではなく、値のみにする必要があります。

于 2014-09-25T03:11:21.013 に答える