慣習的に、Railsは、erbファイルが呼び出されたコントローラに対応するビューヘルパーのみを「接続」します。任意のerbファイルで任意のビューヘルパーのメソッドにアクセスする方法は?
Railsで任意のビューヘルパーのビューヘルパーのメソッドにアクセスするにはどうすればよいですか?
慣習的に、Railsは、erbファイルが呼び出されたコントローラに対応するビューヘルパーのみを「接続」します。任意のerbファイルで任意のビューヘルパーのメソッドにアクセスする方法は?
Railsで任意のビューヘルパーのビューヘルパーのメソッドにアクセスするにはどうすればよいですか?
これを行う必要がある場合は、コードの構成に何か問題があります。代わりに、両方のビューが必要とするヘルパー・メソッドを共通のモジュールに移動し、そのモジュールを両方のモジュールに組み込みます。例えば
、あなたが持っている場合: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方法を持っているにも表示します。
私はよく質問を理解している場合、あなたとあなたのメソッドのヘルパーを定義しています
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文を使用できます。
はい、それはRailsのデフォルトの動作です。あなたの例では、/ views/Controller内のビューは、ControllerHelperで定義されたメソッドにのみアクセスできます。 /view/ControllerのビューからOtherControllerHelperのメソッドを呼び出すといいです... – Scholle
@Scholle申し訳ありませんが、別のコントローラにインクルードを挿入するのを忘れてしまいました。今私は正しく答えなかったことに気づいた! –
コードをリファクタリングすることは良い点であり、問題を解決します... +1 – Scholle
リファクタリングをお勧めしますが、質問に実際に答えるように更新されました。 –