【问题标题】:Ruby on Rails puts in erbRuby on Rails 加入 erb
【发布时间】:2014-07-01 23:53:11
【问题描述】:

我正在开发一个 Web 应用程序,该应用程序具有从文本文件中获取和解析数据的视图(文本文件仅在后端可用,对用户不可用)。我编写了一个函数,它接收文本文件并将其转换为字符串数组,称为txt_to_arr。然后我有另一个函数line_fetcher,它只调用txt_to_arr,并从数组中输出一个随机字符串。

在我看来,我将控制器的函数称为:<% line_fetcher %>

我已经将txt_to_arrline_fetcher 都放入了视图控制器的帮助程序rb 文件中,当我运行rails s 时,根本不会呈现随机字符串。我也试过<% puts line_fetcher %>

我在 Bash 中检查了该函数确实从文本文件中输出随机字符串,因此该函数可以正常工作。此外,正在解析的文本文件位于public 文件夹中。有谁知道为什么会这样?

非常感谢!

【问题讨论】:

  • 你没有展示你实际上是如何做任何事情的。 <%= xxx %> 是如何渲染一个字符串。将写入写入标准输出,标准输出不是呈现的 html 的一部分。查看一些 Rails 教程可能是个好主意。
  • 请显示 text_to_arr 和 line_fetcher 的代码。另外,它是函数还是 ruby​​ 方法?

标签: ruby-on-rails ruby erb


【解决方案1】:

尝试将代码放在控制器中并使用

将输出分配给变量
a=`line_fetcher` (note the backtics) as detailed at

http://rubyquicktips.com/post/5862861056/execute-shell-commands

然后<%= a %> 在您的视图中。

并将文件放在 Rails 应用程序的根目录中

【讨论】:

  • 嘿,感谢您提供有关在 Ruby 中执行 shell 命令的链接,我认为它将来会在这个 Web 应用程序中派上用场:)
【解决方案2】:

简单的erb<%= line_fetcher %> 一样适用于简单的变量。

但是,如果您想要任何模型/数据库实例的输出,请执行以下操作:

<%= ModelName.first.inspect %>

注意inspect这个词。

如果使用HAML,请执行以下操作:

=ModelName.first.inspect

【讨论】:

    【解决方案3】:

    在 ERB 中&lt;% %&gt; 表示这里有 Ruby 代码需要解释。 &lt;%= %&gt; 表示解释并输出 ruby​​ 代码,即显示/打印结果。

    因此,如果您想在标准 ERB 文件中输出,您似乎需要使用额外的 = 符号。

    <%= line_fetcher %>
    

    【讨论】:

      【解决方案4】:

      使用&lt;%= %&gt; 在你的视图中输出一些东西,所以:

      <%= line_fetcher %>
      

      【讨论】:

      • 奇怪的是,我之前尝试过这个并且可以发誓它不起作用..但是在阅读您的建议后再次尝试它有效..谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多