新しいユーザーがメーリング リストに追加され、新しい有料購読者が有料購読者としてメーリング リストで更新されるように、アプリを MailChimp と統合しようとしています (そのための MERGE VARS があります)。顧客がサブスクリプションの料金を支払ったときにリストが適切に更新されることをテストするために、Stripe のテスト サーバーでコードを実行しようとしています。(テスト後にコードを継承したので、これまでに行ったことはありません。)
未定義のメソッド エラーが発生しました。実際のサイトでは問題なく動作しており、コードのその部分を変更していないため、それがどこから来ているのかわかりません。
イニシャライザ ファイルで、stripe.rb をStripe.api_key
="the live secret key"
テスト用の秘密鍵に変更し、他の鍵をサブビングしただけです。
layout/application.html.erb ファイル (Stripe の指示に従って、Stripe への最初の呼び出しを配置する場所) で同じことを行い、公開ライブ キーを公開テスト キーに置き換えました。
account_controller 処理メソッド (Stripe トークンでの支払い処理と、サブスクリプションの種類でサーバーを更新するために呼び出されます):
def processing
begin
if params[:coupon][0] != "_"
@coupon = params[:coupon]
else
@coupon = nil
end
customer = Stripe::Customer.create(
:email => current_user.email,
:card => params[:stripeToken],
:plan => params[:plan],
:coupon => @coupon
)
current_user.subscription = params[:plan]
current_user.stripe_id = customer.id
current_user.canceled = false
current_user.save!
rescue Stripe::CardError => e
flash[:error] = e.message
end
#only this code is new, from here:
#for gibbon updating subscription status
gb=Gibbon::API.new
email=current_user.email
subscription=user.subscription
updated_date=user.updated_at.strftime('%B %d, %Y')
gb.lists.subscribe({:id => "our list id", :email => {:email => "#{email}"}, :merge_vars => {:SUB => "test", :UPDATE => "#{updated_date}"}, :update_existing=>true , :double_optin => false, :send_welcome=> false})
#to here is new code
current_user
respond_to do |format|
format.html { redirect_to account_confirmation_path }
end
end
AccountController#processing で「NoMethodError」が発生しています
undefined method 'canceled=' for #User:an-id-here" (注意: #User: an id here は尖った角かっこで囲まれていますが、ここには表示されません) エラー。このコードはライブ サイトで動作します。 Canceled は User モデルの列で、ユーザーがキャンセルしたかどうかを示すブール値です。attr_accesible または attr_accessor として設定されていませんが、前述したように、コードは変更されておらず、ライブ サイトで動作します。
何が問題なのかわからず、それを理解するのに十分な情報がないように感じます。サーバーは、ブラウザに表示されるのと同じエラー メッセージのみを記録しています。(ああ、ライブ サーバーではなく、ローカル サーバーでのみテスト コードを実行しています)。
未定義のメソッド エラーの原因は何ですか? 私が変更したコードには、それを行うべきものは何も表示されません。