Ruby on rails Ruby呈现特定变量
我有一个包含各种渲染变量的模板 是否有一种方法可以毫无例外地在模板中呈现特定变量Ruby on rails Ruby呈现特定变量,ruby-on-rails,ruby,rendering,eruby,erubis,Ruby On Rails,Ruby,Rendering,Eruby,Erubis,我有一个包含各种渲染变量的模板 是否有一种方法可以毫无例外地在模板中呈现特定变量 e.g. template_content = "My name is <%=firstname%>. I live at <%=location%>" variable_hash = {firstname: "eric"} Erubis::Eruby.new(template_content).result(variable_hash) 例如template\u content=
e.g. template_content = "My name is <%=firstname%>. I live at <%=location%>"
variable_hash = {firstname: "eric"}
Erubis::Eruby.new(template_content).result(variable_hash)
例如template\u content=“我的名字是。我住在”
变量_hash={firstname:“eric”}
Erubis::Eruby.new(模板内容).result(变量散列)
预期产出:
"My name is eric. I live at <%=location%>"
“我的名字叫埃里克,我住在”
我的用例是使用第一个变量进行渲染,并获取渲染的内容
但是,当我运行上述代码时,会出现异常:
“未定义的局部变量或方法位置
”
我正在使用Erubis进行渲染。我对ERB渲染也很满意。只需要使用ruby脚本进行渲染
有什么办法让它工作吗 模块MyModule
module MyModule
def method_missing(method_name)
super
rescue NameError => e
return method_name
end
end
eb = Erubis::Eruby.new('My name is <%=firstname%>. I live at <%=location%>')
eb.extend(MyModule)
result = eb.result(:firstname =>'Ab')
puts result
缺少def方法(方法名称)
超级的
营救名称错误=>e
返回方法名称
结束
结束
eb=Erubis::Eruby.new('我的名字是。我住在')
eb.extend(MyModule)
result=eb.result(:firstname=>'Ab')
结果
不确定这是否是一个好的解决方案,可能有更好的解决方案。当位置数据丢失时,您希望得到什么样的输出?是否要将默认值设置为空字符串?@NeilSlater期望输出:“我的名字是eric。我住在”看起来您希望使用此选项呈现用户提供的内容。在这种情况下,我必须告诉你,这是不安全的,恰恰相反。使用ERB模板,模板作者可以执行任意ruby代码,并对应用程序中的所有内容进行修改,包括访问数据库、窃取所有数据和破坏服务器。您肯定不想运行用户提供的erb模板@Holger只是用户不提供模板。这里也没有db操作。模板由我们的内部开发人员制作。我需要它来对部分呈现的字符串运行验证。e、 g.所有链接的格式都正确。验证时我没有所有变量值。作为变量:
variable_hash={firstname:“eric”,location:“}
;)