2016-03-29 13 views
1
module AHelper 
    class Builder 
    def link 
     build_link(@apple) 
    end 
    end 
    def build_link(sth) 
    link_to "#", "buy #{sth}" 
    end 
end 

をヘルパーモジュールメソッドを呼び出し、のlink_toメソッドが呼び出されるために提供されていますが、クラスビルダ内で、そうではありません。だから私はヘルパーモジュールに含まれている外部メソッドを呼び出し、このメソッドにインスタンス変数の値を渡す方法を探しています。Railsは - ヘルパーモジュールでは、クラスのインスタンスメソッド内

ヘルパーモジュールが既に利用できるように、クラスにActionView :: UrlHelperを含めたくありません。 link_toはここで必要性をデモするための例です。どのようにレール上のルビーでこれを行うには?

+0

[Rails Routingヘルパー(つまり、mymodel \ _path(model))をモデルで使用できるかどうか](http://stackoverflow.com/questions/341143/can-rails-routing-helpers-ie-mymodel) -pathmodel-in-models) – lcguida

+0

'link_to'はこの質問の一例に過ぎないので重複しません。 – Albin

答えて

3

あなたはBuilder

module AHelper 
    class Builder 
     def initialize(view) 
     @view = view 
     end 
     def link 
     @view.build_link(@apple) 
     end 
    end 
    def build_link(sth) 
     link_to "#", "buy #{sth}" 
    end 
end 

のインスタンスにビューコンテキストを渡すことによって、これを達成することができますし、それがヘルパーであるかどうかは、コントローラまたはselfにある場合、あなたはview_contextに渡すビルダーをインスタンス化するときビュー。

関連する問題