将方法结果输出到erb

问题描述 投票:0回答:1

我正在开发一个创建随机句子的应用程序。我将它用作控制台应用程序,并希望制作一个 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 文件上,以便它显示在浏览器上。

我怎样才能做到这一点?

ruby sinatra
1个回答
2
投票

你能试试这个吗:

<%= @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 %>
© www.soinside.com 2019 - 2024. All rights reserved.