2016-08-04 5 views
-1

私は、モジュールmangopay_helper.rb私はMangoPayHelper.transfer_to_contractor呼び出すコントローラのアクションでruby​​モジュールでflash [:notice]をどのように接続しますか?

module MangoPayHelper 

    def transfer_to_contractor(contract, client, contractor) 
    amount = contract.amount * 0,1.to_i 
    begin 
    MangoPay::Transfer.create({ 
     Tag: "#{contract.id} + #{contract.title}", 
     AuthorId: client.mangopay_id, 
     DebitedFunds: {Currency: "EUR", Amount: contract.amount}, 
     Fees: { Currency: 'EUR', Amount: amount}, 
     DebitedWalletId: client.wallet_id, 
     CreditedWalletId: contractor.wallet_id 
    }) 
    rescue MangoPay::ResponseError => e 
    flash[:notice] = " Code: #{ e['Code'] } Message: #{ e['Message'] }" 
    end 
    end 
end 

を持っています。

Error: undefined local variable or method `flash' for MangoPayHelper:Module 

ルビモジュールでフラッシュを接続するにはどうすればよいですか?

+0

メソッドの引数として渡すフラッシュ ' –

+0

をtransfer_to_contractor'しかし、なぜ、あなたはヘルパーから' flash'を変更したいのですか?それは良いアプローチではない、コントローラは 'フラッシュ'で遊ぶべき正しい場所です。 –

+0

モジュールからフラッシュが削除されましたが、同じエラーが発生しました。 – dev85

答えて

0

あなたは(とすべきである)コントローラはflashハッシュの操作を処理させることができます。

module MangoPayHelper 
    def self.transfer_to_contractor!(contract, client, contractor) 
    amount = contract.amount * 0,1.to_i 

    MangoPay::Transfer.create({ 
     Tag: "#{contract.id} + #{contract.title}", 
     AuthorId: client.mangopay_id, 
     DebitedFunds: {Currency: "EUR", Amount: contract.amount}, 
     Fees: { Currency: 'EUR', Amount: amount}, 
     DebitedWalletId: client.wallet_id, 
     CreditedWalletId: contractor.wallet_id 
    }) 
    end 
end 

class TransfersController < ApplicationController 
    def create 
    # [...] 
    begin 
     MangoPayHelper.transfer_to_contractor!(contract, client, contractor) 
    rescue MangoPay::ResponseError => e 
     flash[:notice] = " Code: #{ e['Code'] } Message: #{ e['Message'] }" 
    end 
    # [...] 
    end 
end 
+0

i undestandのファイルで実行してみてください。答えてくれてありがとう – dev85

0

まず、def transfer_to_contractorがあるため、MangoPayHelper.transfer_to_contractorをコードで呼び出すことはできません。そのような呼び出し可能にするには、def self.transfer_to_contractorが必要です。

flashはコントローラメソッドです。モジュールから呼び出し可能にするには、コントローラ内のモジュールをincludeにしてから、MangoPayHelper.transfer_to_contractorの代わりにtransfer_to_contractorのようなメソッドを呼び出します。モジュールをインクルードすると、モジュールはflashのようなインクルードメソッドへのアクセスを取得します。

例えば、

class SomeController < ApplicationController 
    include MongoPayHelper 
    def my_route 
    transfer_to_controller(some args) 
    etc 
    end 
end 
+0

ありがとうございます、未初期化定数ContractsController :: MangoPayHelpererror。モジュールストアが 'lib'フォルダに格納されています – dev85

+0

さて、あなたのモジュールがどこに定義されているのかは間違いです。それをconfig/initializersフォルダ –

関連する問題