我正在开发一个创建随机句子的应用程序。我将它用作控制台应用程序,并希望制作一个 Sinatra 应用程序,让我可以在浏览器上显示句子。
我有一个从表单填充的变量@grammar。我想将其传递到一个方法中,几个方法一起工作以接收字符串并使用大量逻辑从中生成随机句子。我的 rsg.erb 文件如下所示。
<%= @grammar %>
<%=
rds = read_grammar_defs(@grammar) #get text from file and parse
sds = rds.map { |rd| split_definition rd} #use split definition to make array of strings
tgh = to_grammar_hash(sds) #create hash
rs = expand(tgh) #create sentence
%>
它可以很好地将@grammar字符串打印到浏览器,但是expand的输出没有打印到浏览器。扩展方法正确生成了句子,正如我的控制台显示的那样:
[2016-11-17 23:48:47] INFO WEBrick 1.3.1
[2016-11-17 23:48:47] INFO ruby 2.3.1 (2016-04-26) [i386-mingw32]
== Sinatra (v1.4.7) has taken the stage on 4567 for development with backup from WEBrick
[2016-11-17 23:48:47] INFO WEBrick::HTTPServer#start: pid=7192 port=4567
::1 - - [17/Nov/2016:23:48:48 -0500] "GET / HTTP/1.1" 200 1485 0.0100
::1 - - [17/Nov/2016:23:48:48 Eastern Standard Time] "GET / HTTP/1.1" 200 1485
- -> /
The waves portend like big yellow flowers tonight.
::1 - - [17/Nov/2016:23:48:51 -0500] "GET /?grammar=Poem HTTP/1.1" 200 8 0.0010
::1 - - [17/Nov/2016:23:48:51 Eastern Standard Time] "GET /?grammar=Poem HTTP/1.1" 200 8
http://localhost:4567/ -> /?grammar=Poem
“今晚海浪预示着像黄色的大花。”是扩展方法的输出。我想将其显示在 erb 文件上,以便它显示在浏览器上。
我怎样才能做到这一点?
你能试试这个吗:
<%= @grammar %>
<%-# Assigning values to the variables in first step %>
<%-
rds = read_grammar_defs(@grammar) #get text from file and parse
sds = rds.map { |rd| split_definition rd} #use split definition to make array of strings
tgh = to_grammar_hash(sds) #create hash
rs = expand(tgh) #create sentence
%>
<%-# Printing it in second step %>
<%= rs %>