我没有太多使用Ruby的经验所有我不想做的是渲染一个我在.erb文件中的.rb文件中声明的值。
在我的.rb文件中,我有这个:
def abc()
begin
"aaaaa"
end
end
在我的.erb文件中,我有这个:
Hello <% abc %>
当我运行应用程序时,我只看到:
您好
但我希望看到:
你好aaaa
任何人都可以帮助我,我根本不懂红宝石。此外,我不知道这是否是铁轨上的红宝石或红宝石,如果下面的标签是错误的,那就很抱歉。
答案 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/