我正在尝试使用帮助在我的控制器中访问辅助方法,如下所示:
class MyController < ApplicationController
def index
@foo = 'bar'
helpers.my_helper_method
end
end
Inside Helper方法,我试图访问控制器的实例变量
module MyHelper
def my_helper_method
#some manipulation on foo
@foo.to_i
end
end
但是在上面的场景中,@ foo是零。当我从视图中调用相同的方法时,@ foo可用。那么实例变量只能通过UI传递给辅助方法,还是有其他方式?
提前致谢。
更新
view_context
似乎是合理的解决方案https://apidock.com/rails/AbstractController/Rendering/view_context
答案 0 :(得分: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
将其作为参数传递。
答案 1 :(得分:0)
您可以访问在助手中的控制器中设置的实例变量。如果值为nil
,那么您需要在帮助程序中处理它:
module SomeHelper
def do_something
return 0 if !@value
value * 3
end
end
class SomeController
def index
@value = 1
helpers.do_something
end
def show
@value = nil
helpers.do_something
end
end