をレールにGoogle Appsのスクリプトを変換:ルビー/ Railsの - 私はRailsので動作するようにはGoogle Appスクリプトに次の変換方法、トラブルのビットを抱えている
Tutorial: Parsing an XML Document
これは私が「メソッドであります変換したいdは:これは私がこれまで持っているものである
function parse(txt) {
var doc = Xml.parse(txt, true);
var attr = doc.spellcheck;
if (attr) {
return "Cannot find actor: " + attr.name;
}
var actors = doc.html.head.getElements("actor");
var movies = doc.html.head.getElements("movie");
if (!actors || actors.length ==0) {
return "no match found";
}
var movieIndex = 0;
var r = '';
var firstPerson = true;
for (var i in actors) {
r = r + actors[i].getText();
if (movies[movieIndex]) {
r = r + (firstPerson ? "" : " who") + " was in " +
movies[movieIndex].getText() + " with ";
}
movieIndex++;
firstPerson = false;
}
return r;
}
:
私はXMLを解析するためにNokogiri
を使用してい
:
uri = "http://oracleofbacon.org/cgi-bin/xml?a=Kevin%20Bacon&b=#{to.strip.to_hash}&u=1&p=google-apps"
doc = Nokogiri::XML(open(uri))
変換での私の試み:
def parse(doc)
attr = doc.xpath("//link//actor").first # => "<actor>Miley Cyrus</actor>"
if (!attr)
return "Cannot find actor: #{attr}"
end
actors = doc.xpath("//link//actor")
movies = doc.xpath("//link//movie")
if (!actors || actors.length == 0)
return "No match found."
end
movieIndex = 0
r = ""
firstPerson = true
actors.each do |actor|
r = r + actor
if (movies[movieIndex])
r = r + (firstPerson ? "" : " who") + " was in #{movies[movieIndex]} with "
end
movieIndex++
firstPerson = false;
end
return r
end
私はエラーを取得する:
`block in parse': undefined method `[email protected]' for false:FalseClass (NoMethodError)
これはfirstPerson = false
ライン上で起こっています。
だから、うまくいきませんか? –
@SergioTulentsev私はエラーで更新しました。 – fuzz
フルビオ:明らかにそうです:-) –