Tôi có một mẫu ERB inlined vào mã Ruby:Mẫu Ruby: Làm thế nào để chuyển các biến vào ERB nội tuyến?
require 'erb'
DATA = {
:a => "HELLO",
:b => "WORLD",
}
template = ERB.new <<-EOF
current key is: <%= current %>
current value is: <%= DATA[current] %>
EOF
DATA.keys.each do |current|
result = template.result
outputFile = File.new(current.to_s,File::CREAT|File::TRUNC|File::RDWR)
outputFile.write(result)
outputFile.close
end
tôi không thể vượt qua biến "hiện tại" vào mẫu.
Lỗi này là:
(erb):1: undefined local variable or method `current' for main:Object (NameError)
Làm thế nào để sửa lỗi này?
Điều này là không cần thiết. Trong mã từ câu hỏi ban đầu của bạn, chỉ cần thay thế "result = template.result" bằng "result = template.result (binding)" Điều đó sẽ sử dụng ngữ cảnh của mỗi khối thay vì ngữ cảnh cấp cao nhất. – sciurus