2017-08-14 10 views
1

私は以下のようなヘルパー使用して私のコントローラ内でヘルパーメソッドにアクセスしようとしています:railsヘルパーのコントローラインスタンス変数にアクセスできませんか?

class MyController < ApplicationController 
    def index 
     @foo = 'bar' 
     helpers.my_helper_method 
    end 
    end 

内のヘルパーメソッドを、私はコントローラ

module MyHelper 
    def my_helper_method 
    #some manipulation on foo 
    @foo.to_i 
    end 
end 

しかし、上記の中のインスタンス変数にアクセスしようとしていますシナリオ@fooはnilです。ビューから同じメソッドを呼び出すと、@fooが利用できます。したがって、インスタンス変数は、UIまたはその他の方法でのみヘルパーメソッドに渡すことができますか?

ありがとうございます。

UPDATE:

view_context 

合理的な解決策のようなhttps://apidock.com/rails/AbstractController/Rendering/view_context

答えて

1
class MyController < ApplicationController 
    def index 
     @foo = 'bar' 
     helpers.my_helper_method(@foo) 
    end 
    end 

module MyHelper 
    def my_helper_method(foo) 
    #some manipulation on foo 
    foo.to_i 
    end 
end 

を引数として渡しいるようです。

+0

これは、コード例ですが、実際のコードは複雑で、インスタンス変数としてアクセスする必要があります。あなたはこのようにヘルパーメソッドを呼び出すと、私はアクセスインスタンス変数がないことを確認してください。 – Praveenkumar

0

ヘルパーのコントローラで設定したインスタンス変数にアクセスできます。値がnilであれば、あなたはヘルパーでそれに対処する必要があります。

module SomeHelper 
    def do_something 
    return 0 if [email protected] 
    value * 3 
    end 
end 

class SomeController 
    def index 
    @value = 1 
    helpers.do_something 
    end 

    def show 
    @value = nil 
    helpers.do_something 
    end 

end 
関連する問題