undefined local variable or method for main:Object (NameError)除非erb模板中使用的变量是全局变量,否则erb会给我.
那是对的吗?on ruby 1.8.7(2010-01-10 patchlevel 249)[i486-linux]
下面是有效的代码.如果我$从变量名称($ db,$ db_root,$ db_root_password)中删除我得到错误.
$db = get_single_argument("database name")
$db_root = get_single_argument("database root user name")
$db_root_passwd = get_single_argument("database root user password")
mysql_commands = get_conf_file("installer_mysql.erb")
puts mysql_commands.result #gives me the error
Run Code Online (Sandbox Code Playgroud)
和get_conf_file过程
def get_conf_file(file)
return_array = Array.new
if (File.exists?(file))
return_array = ERB.new File.read(file)
end
return_array
end
Run Code Online (Sandbox Code Playgroud)
Ruby有一个叫做绑定的概念,你可能会认为它是一段代码可能具有的局部变量,self值,块等.您可能还会将绑定视为代码的上下文.
Erb的result方法采用可选的第二种方法,即用于评估您提供的代码的绑定,因此您可以执行类似的操作
x = 1
ERB.new('x=<%= x %>').result(binding) #=> "x=1"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6145 次 |
| 最近记录: |