[英]Ruby on Rails - using a block parameter as a method call
我在我正在构建的 Rails 上遇到一点 Ruby 的问题,需要一些帮助。 我有一个包含 20 多列的表和一个相应的 XML 文件,可以将其解析为某种带有 gem 的 hash。 每个键都将映射到一列,每个值将是所述列中的数据记录。
我在已解析的 XML 文件中访问特定值的方式是:
filename["crs","inputkeyhere"]
它返回值,例如“52”或其他。
我要做的是上传文件,用 gem 解析它并为每一列赋予相应的值。
我的表(或模型)被称为“属性集”,我已经知道如何访问每一列:
@attributeset = Attributeset.new
@attributeset.attributes.keys
所以我的思考过程是:
所以我的代码将 go 是这样的:
@attributeset.attributes.keys.each do |a|
@attributeset.a=filename["crs",a]
end
但我的问题是,ruby 认为“.a”是一种方法,显然不会对块参数评估“a”。 我已经阅读了 lambdas 和 procs 之类的东西,但并没有真正理解它们如何适用于我的具体情况。
来自 bash 脚本可能我的想法可能是错误的,但我认为 the.a 可能会被评估。 我知道我可以使用 yield 运行该块,但这仅适用于我所知道的方法。
任何帮助表示赞赏。 谢谢,保持健康,亚历克斯
感谢您的输入,我想让它尽可能干净。 并且不使用任何临时哈希来传递参数。 我找到了方法
write_attribute
可以这样使用:
@attributeset.write_attribute(a, xmp["crs",a])
非常适合我。
您可以使用[]=
方法动态设置值:
@attributeset.attribute_names.each do |attribute|
@attributeset[attribute] = filename["crs", attribute]
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.