簡體   English   中英

包含在 Rails 控制器中

[英]include in Rails Controller

我正在嘗試將 Ruby on Rails 與來自https://github.com/AuthorizeNet/sample-code-ruby/blob/master/AcceptSuite/create-an-accept-payment-transaction.rb的 Authorize.Net API 集成。 當我嘗試在自定義控制器的方法中運行此 ruby​​ 代碼時

   class PaymentController < ApplicationController

     def create_an_accept_payment_transaction
         include AuthorizeNet::API
         config = YAML.load_file(File.dirname(__FILE__) + "/../credentials.yml")

         transaction = Transaction.new(config['api_login_id'], config['api_transaction_key'], :gateway => :sandbox)

         request = CreateTransactionRequest.new

        ...............
        if response.messages.resultCode == MessageTypeEnum::Ok
        ................
     end
   end

我收到以下錯誤

NoMethodError (undefined method `include' for #<PaymentController:0x000000000296d118>)

 NameError (uninitialized constant PaymentController::MessageTypeEnum
 Did you mean?  MessagePack):

但是相同的 ruby​​ 代碼在 ActiveRecord 模型中的方法中沒有任何問題。 為什么 ?

class Payment < ApplicationRecord

def self.payment_transaction(token, amount)
      require 'yaml'
      require 'authorizenet' 
      require 'securerandom'
      include AuthorizeNet::API
      config = YAML.load_file(File.dirname(__FILE__) + "/../credentials.yml")
      transaction = Transaction.new(config['api_login_id'], config['api_transaction_key'], :gateway => :sandbox)
     request = CreateTransactionRequest.new
      request.transactionRequest = TransactionRequestType.new()
    ..................
 end
 end    

我也可以運行這個 ruby​​ 代碼而沒有任何問題

    $ ruby create-an-accept-payment-transaction.rb

payment_transaction是一個類方法,而create_an_accept_payment_transaction是一個實例方法。 include AuthorizeNet::API調用適用於類而不是實例。

試試這個:

require 'authorizenet' 
class PaymentController < ApplicationController  
  include AuthorizeNet::API
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM