【发布时间】:2016-03-21 21:23:32
【问题描述】:
我正在尝试运行以下代码:
class RentLimit < ActiveRecord::Base
def self.load_data
rows = CSV.open("csvs/income_limits_2011_to_2015.csv").read
rows.shift
rows.each do |county, yr, date, _50pct_1br, _50pct_2br, _50pct_3br, _50pct_4br, _60pct_1br, _60pct_2br, _60pct_3br, _60pct_4br|
[50, 60].each do |ami|
[1, 2, 3, 4].each do |br|
r = new
r.county = county
r.state = "SC"
r.year = yr
r.effective_date = Date.parse(date)
r.pct_ami = ami
r.br = br
r.max_rent = self.send("_#{ami}pct_#{br}br".to_sym)
r.save
end#of brs
end# of amis
end# of rows
end
end
但在尝试运行时收到此错误消息:
NoMethodError: undefined method `_50pct_1br' for #<Class:0x007fe942ce3b18>
send 方法无法访问范围内的那些块参数。有没有办法让send 访问块参数?如果没有,我还能如何动态访问块参数?
如何在 Ruby 中使用send 或其等效项来访问块参数?
【问题讨论】:
-
我有点同意反对这个问题的人。整个编码方法都是废话。我最终只使用了 eval()。也投票关闭