2011-07-09 22 views

答えて

2

これを行う必要がある場合は、コードの構成に何か問題があります。代わりに、両方のビューが必要とするヘルパー・メソッドを共通のモジュールに移動し、そのモジュールを両方のモジュールに組み込みます。例えば

、あなたが持っている場合:flavor_ofメソッドへのアクセス権を持っている

module ApplesHelper 
    def flavor_of(fruit) 
    end 
end 

としたい/バナナの景色を、その後、次の操作を行います。

module Flavored 
    def flavor_of(fruit) 
    # ... 
    end 
end 

module ApplesHelper 
    include Flavored 
end 

module BananasHelper 
    include Flavored 
end 

更新:私は実際に元の質問に直接答えなかったことに気付きました。ビュー内の別のヘルパーを含める方法はhelperである:

class BananasController ... 
    helper ApplesHelper 
end 

は今、すべて/バナナはそれらに利用可能なApplesHelper方法を持っているにも表示します。

+0

コードをリファクタリングすることは良い点であり、問​​題を解決します... +1 – Scholle

+0

リファクタリングをお勧めしますが、質問に実際に答えるように更新されました。 –

1

私はよく質問を理解している場合、あなたとあなたのメソッドのヘルパーを定義しています

module ControllerHelper 
    def function_you_have_to_call 
     some_code_here 
    end 
end 

あなたは* .erbファイルで、あなたの方法のヘルパーを呼び出したいときは、ビューでこれを挿入する必要が:あなたのメソッドが戻り値を持っており、あなたはあなたのビューで定義されたローカル変数に格納したい場合は

<% function_you_have_to_call %> 

は、試してみてください。

<% value_you_want = function_you_have_to_call %> 

<% %>に含まれるコードは、ルビによってのみ解釈され、表示されません。この場合、<%= %>に含まれるコードを使用する必要があります。

value_you_wantにアクセスしてfor文を使用できます。

+0

はい、それはRailsのデフォルトの動作です。あなたの例では、/ views/Controller内のビューは、ControllerHelperで定義されたメソッドにのみアクセスできます。 /view/ControllerのビューからOtherControllerHelperのメソッドを呼び出すといいです... – Scholle

+1

@Scholle申し訳ありませんが、別のコントローラにインクルードを挿入するのを忘れてしまいました。今私は正しく答えなかったことに気づいた! –

関連する問題