ruby-on-rails – 将一个局部变量注入绑定
发布时间:2020-12-17 03:30:15 所属栏目:百科 来源:网络整理
导读:我正在尝试将局部变量设置为现有绑定 def foo_callback lambda { |name| p name }endb = foo_callback.binding 绑定没有任何局部变量开头: b.eval("local_variables") # = [] 让我们为绑定设置一个原始局部变量: b.eval("age=30") 一切都按预期工作: b.ev
我正在尝试将局部变量设置为现有绑定
def foo_callback lambda { |name| p name } end b = foo_callback.binding 绑定没有任何局部变量开头: b.eval("local_variables") # => [] 让我们为绑定设置一个原始局部变量: b.eval("age=30") 一切都按预期工作: b.eval("local_variables") # => ["age"] b.eval("age") # => 30 现在,让我们尝试将非原始局部变量设置为绑定: country = Country.first b.eval("lambda {|v| country = v}").call(country) 注意:用于设置变量的technique是从facet gem借用的.我尝试了ruby 1.9 safe implementation,结果相同. 绑定不反映本地变量国家/地区. b.eval("local_variables") # => ["age"] 我该如何解决这个问题?本质上,我想使用现有的非原始变量的值在绑定中声明一个新变量. 我在Ruby 1.8.7上. 解决方法
您正在绑定之外创建国家/地区,然后lambda中的国家/地区仅在该范围内有效.如果你需要将它注入到绑定中,为什么不评估呢?
更新 尝试在lambda范围之外声明变量,但在绑定范围内: b.eval("country = nil; lambda {|v| country = v}").call(country) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |