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:“}
;)