如何将.rb文件中的值呈现为.erb文件

时间:2018-01-24 14:28:29

标签: ruby sinatra frontend

我没有太多使用Ruby的经验所有我不想做的是渲染一个我在.erb文件中的.rb文件中声明的值。

在我的.rb文件中,我有这个:

def abc()
  begin
     "aaaaa"
  end
end

在我的.erb文件中,我有这个:

Hello <% abc %>

当我运行应用程序时,我只看到:

  

您好

但我希望看到:

  

你好aaaa

任何人都可以帮助我,我根本不懂红宝石。此外,我不知道这是否是铁轨上的红宝石或红宝石,如果下面的标签是错误的,那就很抱歉。

3 个答案:

答案 0 :(得分:3)

在Sinatra中,将您的方法注册为.rb文件中的帮助程序:

helpers do 
  def abc
    "aaaaa"
  end 
end

如果你的方法不需要参数,则省略括号。此外,此处不需要begin/end阻止。 您可以在.erb模板中调用您的助手:

<%= abc %>

不要忘记开头标记中的=

http://sinatrarb.com/intro.html部分&#39;助手&#39;。

答案 1 :(得分:1)

目前还不清楚你想要达到什么目标。但如果你只想在你的erb中找到一些文字,你可以这样做:

<% if saved %>
  Hello <%= text %>
<% endif %>

myerb.erb

    List<Document> documents = collection.find().into(new ArrayList<Document>());

    for (Document document : documents) {
        List<Document> scores = (List<Document>) document.get("scores");
        Document minDoc = null;
        for (Document score : scores) {
            if ("homework".equals(score.getString("type")) && (minDoc == null || minDoc.getDouble("score") > score.getDouble("score"))) {
                    minDoc = score;
                }
        }
        collection.updateOne(new Document("_id", document.get("_id")), new Document("$pull", new Document("scores", minDoc)));
    }

这也适用于功能。

答案 2 :(得分:1)

首先,您需要知道定义的方法本身就包含了开始/结束块的功能,因此您不需要再次放置它们。假设您正在使用sinatra,我认为您需要这些:

my.rb

require 'sinatra'

def abc
  "aaaa"
end

get '/' do
  erb :my, locals: {variable: abc}
end

my.erb

<html>
  <body>
    <p>
       Hello <%= variable %>
    </p>
  </body>
</html>

运行ruby my.rb,然后打开http://localhost:4567/