是否可以在 Sinatra 视图中使用在改进中定义的方法?
Is it possible to use methods defined in refinements in Sinatra views?
我在 gem 中定义了一个 class,我正在通过改进向其中添加一些方法(在 Ruby 2.3.0 中)。这个 class 出现在某些 Sinatra 视图 (haml) 中。
当我在助手中引用这些额外的方法时,没有问题。但是在视图中,我得到一个未定义的方法错误。
我是不是漏掉了一个技巧,还是 using ...
语句需要去某个我无法到达的地方?
(解决方法:我可以为对象上的方法 return 定义辅助方法。但如果我想那样做,那么我就不会使用改进...)
细化的范围由词汇决定。除非您在 haml 中重写调用该方法的方法,使其进入 using
命令的范围内,否则您无法使用细化。但我猜 haml 在内部使用 eval
或类似的东西来评估你在 haml 文件中编写的代码。那样的话,那是不可能的。
我在 gem 中定义了一个 class,我正在通过改进向其中添加一些方法(在 Ruby 2.3.0 中)。这个 class 出现在某些 Sinatra 视图 (haml) 中。
当我在助手中引用这些额外的方法时,没有问题。但是在视图中,我得到一个未定义的方法错误。
我是不是漏掉了一个技巧,还是 using ...
语句需要去某个我无法到达的地方?
(解决方法:我可以为对象上的方法 return 定义辅助方法。但如果我想那样做,那么我就不会使用改进...)
细化的范围由词汇决定。除非您在 haml 中重写调用该方法的方法,使其进入 using
命令的范围内,否则您无法使用细化。但我猜 haml 在内部使用 eval
或类似的东西来评估你在 haml 文件中编写的代码。那样的话,那是不可能的。