我在 View 助手中有很多这样的方法
def background
"#e9eaec"
end
def footer_link_color
"#836448"
end
我希望将这些方法暴露给 View ,但我更希望帮助程序更简洁一些。将哈希转换为方法(或其他东西)的最佳方法是什么?
最佳答案
module MyHelper
{:background => "#e9eaec", :footer_link_color => "#836448"}.each do |k,v|
define_method(k) {v}
end
end
虽然我认为用这种简洁性来换取第一种方法的可读性不一定是个好主意。
如果你想泛化这个,你可以在Module类中添加如下方法:
class Module
def methods_from_hash(hash)
hash.each do |k,v|
define_method(k) {v}
end
end
end
然后在您的助手中调用 methods_from_hash(:background => ...)
。
关于ruby - 制作方法的方法 : Easy Ruby Metaprogramming,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2852826/