- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
快速背景:我正在设置一个快速而肮脏的模板方案,其中我所有的模板文件都命名为“*.erb”。填充数据驻留在 yaml 文件中。输出为模板名称减去“.erb”的文件。
我没有对 erb 做太多工作,我收到错误“`result':无法将字符串转换为整数(TypeError)”......这对我来说没有多大意义。
这是完成工作的类 (generate_interface.rb):
#! /usr/bin/ruby
require 'yaml'
require 'erb'
class GenerateInterface
def initialize(yamlfile)
@yamlfile = yamlfile
@erbfiles = Dir.glob("*.erb")
end
def gobutton
# i -- interface. kept short because it's used all over the place in the erb files.
i = YAML.load_file( @yamlfile )
puts( "i: #{i.inspect}" )
puts( "i['test_id']: #{i['test_id'].inspect}" )
puts( "( i['test_id'] ).to_s: #{( i['test_id'] ).to_s}" )
@outfile=@erbfiles.map do
|erbfile|
puts( "erbfile: #{erbfile.inspect}" )
outfile = erbfile.gsub(/\.erb$/,"")
puts( "outfile: #{outfile.inspect}" )
template = File.open( erbfile, 'r' ) { |f| f.read }
puts( "template: #{template.inspect}" )
message = ERB.new(template, "%<>" )
puts( "message: #{message.inspect}" )
result=message.result
puts( "result: #{result.inspect}" )
File.open(outfile, 'w' ) { |f| f.write( message.result) }
end
end
end
yaml 文件(test.yaml):
---
test_id: XXX123
模板文件(test.txt.erb):
Line 1
Line 2 test_id: <%= i['test_id'] %>
Line 3
导致整个困惑的代码(test.rb):
#! /usr/bin/ruby
require "generate_interface"
test_interface = GenerateInterface.new( "test.yaml" )
test_interface.gobutton
最后,输出和错误信息:
$ ruby -d test.rb
Exception `NoMethodError' at /usr/lib/ruby/1.8/rational.rb:78 - undefined method `gcd' for Rational(1, 2):Rational
i: {"test_id"=>XXX123}
i['test_id']: XXX123
( i['test_id'] ).to_s: XXX123
erbfile: "test.txt.erb"
outfile: "test.txt"
template: "Line 1\nLine 2 test_id: <%= i['test_id'] %>\nLine 3\n"
message: #<ERB:0xb74ac150 @src="_erbout = ''; _erbout.concat \"Line 1\\nLine 2 test_id: \"\n; _erbout.concat(( i['test_id'] ).to_s); _erbout.concat \"\\nLine 3\\n\"\n\n; _erbout", @safe_level="%<>", @filename=nil>
Exception `TypeError' at /usr/lib/ruby/1.8/erb.rb:715 - can't convert String into Integer
/usr/lib/ruby/1.8/erb.rb:715:in `result': can't convert String into Integer (TypeError)
from /usr/lib/ruby/1.8/erb.rb:714:in `call'
from /usr/lib/ruby/1.8/erb.rb:714:in `result'
from ./generate_interface.rb:26:in `gobutton'
from ./generate_interface.rb:17:in `map'
from ./generate_interface.rb:17:in `gobutton'
from test.rb:6
我认为 _erbout.concat(( i['test_id'] ).to_s) 有问题,但是当我显式打印 ( i['test_id'] ).to_s 时,我得到的是 'XXX123'我期待。
最佳答案
(您粘贴的 generate_interface.rb 错过了最后的 end
)
直接的问题是 Erb.initialize
的第二个参数是安全级别;第三个是修剪选项。您的修剪选项被解释为安全水平。
要解决这个问题,请更改
message = ERB.new(template, "%<>" )
到
message = ERB.new(template, nil, "%<>" )
第二个问题是变量i
不会自动对您的模板代码可用。要解决这个问题,您需要传入一个绑定(bind),更改
result = message.result
到
result = message.result(binding)
在接下来的行中,将 message.result
更改为 result
关于Ruby: erb throwing error "` result': can't convert String into Integer (TypeError)”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4008732/
我有点困惑为什么在 RoutineRetrieved 函数中分配 ACTIVITYIMAGE 时使用 result.getInt(2) 并在分配 SLOT 时使用 result.getInt(3)..
我是android领域的新手,我想从响应json数组访问每个结果元素,但我无法做到这一点,我试图获取每个元素,但我只得到一个值“rohit1”是第一个元素。请帮助我。 我是 rohit parmar,
我只有从 sql 查询返回的一行 (count(*)),但在执行包时,它向我显示上述错误,并且包失败。 我将结果类型设置为“单行”,并将查询的输出(select count(*) as 'result
我正在尝试使用Diesel将简单的原始SQL转换为MySQL,如本示例所示: https://docs.diesel.rs/diesel/fn.sql_query.html let users = s
我正在尝试 Play 框架的第一个示例,但出现了此错误 在我的路线文件中: # API # ~~~~ GET /api/geotweets/index controllers.api.GeoTw
这段代码可以返回null吗? (this.Result == Result.OK) 此行(或类似行)是否可以返回除 true 或 false 之外的任何内容(例如 null)? 最佳答案 (this.
我有一个 SSIS 执行 SQL 任务。它返回一个完整的结果集(即一个表)。但是,当我执行包时出现以下错误。我已经正确地为返回的结果集命名。 [执行 SQL 任务] 错误:对于完整的结果集和 XML
最近我刚刚将 swift 2.3 项目转换为 3.2,alamofire 也得到了转换,我收到了很多问题,其中大部分都已解决,现在我被给定的两个问题所困扰 问题在 alamofire 的 Respon
我在 R 中收到以下错误消息: Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set", : Unable to r
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 去年关闭。
我正在使用一个简单的命令运行以下存储过程sp_MSforeachdb。我的问题是如何限制结果仅显示至少有 1 条记录满足命令的数据库: 这是我的存储过程: EXECUTE master.sys.sp_
我在单独的线程中运行一些代码: fn f1() -> Result { Err("err1".to_string()) } fn f2() -> Result { Err("err2"
我在这里尝试使用 AsyncTask 从 OWM API 显示 7 天的天气预报。 doInBackground(String...param) 方法也工作正常。我检查了 LOGCAT。 异步完成执行
我已经创建了mysql的索引和全文索引,后端存储引擎是MyISAM。 mysql> show index from play_movie; +------------+------------+---
我有一个表articles,它的结构如下: id, name, date, contents 我有一个表authors,它的结构如下: id, article_id, name, email 一篇文章
我很困惑我们是否应该创建单独的 API 来获取结果和结果计数,或者我们应该只根据结果 API 中的查询字符串来获取计数。 /api/results/ : Fetches all records /ap
我正在制作一个将两个数字相除的系统,如果第二个数字不存在,它将选择第一个数字。这是代码: let new_num: f32 = match num1/num2 { Ok(num) => n
这个问题在这里已经有了答案: Why am I getting "unused Result which must be used ... Result may be an Err variant,
我正在修改 the texture synth 中的示例之一项目: use texture_synthesis as ts; fn main() -> Result { //create a
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: ^ operator in java 我假设 c ^ d是一个类似“的幂”的计算,所以c = 5 , d = 2 ,
我是一名优秀的程序员,十分优秀!