[英]ruby2/rails4: How do I set a variable in a model that can then be available to multiple methods
[英]How do I make module methods available to a constant Proc variable? (Ruby)
这是在我的应用程序助手中:
def call_me
"blah"
end
P = Proc.new { call_me }
def test_me
P.call
end
如果我在我看来这样做:
<%= test_me %>
我收到一条错误消息,说 call_me 是一个未定义的方法。
如何让 Proc 能够调用 call_me? 要求不这样做。 ApplicationHelper::call_me 前缀也不行。 :(
这行得通,但我真的不喜欢它,因为 test_me 会被调用很多次,实际上还有更多的 Procs:
def test_me
p = Proc.new { call_me }
p.call
end
它应该在 Ruby 1.9.2 中正常工作,但在早期版本中,您可以将帮助程序作为参数传递给 Proc:
P = Proc.new { |helper| helper.call_me }
def test_me
P.call self
end
由于call_me
是您的助手上的实例方法,因此您需要使用实例调用它。
最实用的方法是制作模块方法 static,然后在任何需要的地方简单地使用它们:
module Sample::SillyModule
def self.say_hello(my_cool_var)
puts "Hello #{my_cool_var}!"
end
end
proc do
Sample::SillyModule.say_hello("stackoverflow")
end
我想你在找这个?
def call_me
Proc.new
end
proc = call_me { "blah" }
proc.call #=> "blah"
你必须把 call_me 传进去。有点复杂......
p = Proc.new { |m| m.call }
def test_me
p.call(call_me)
end
我不完全确定你在这里的目标在更大的意义上是什么所以这或多或少是在黑暗中刺伤......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.