在Rails中如何向响应中写入内容?(类似于PHP中的"echo")

16

我知道在Rails中可以这样做:

<%="hello" %>

但是有没有什么方法可以做到这一点呢?

<%
echo "hello"
%>

如何让它显示在响应中?


是的,对象存在,但方法不存在 :) 未定义方法 `write' for #ActionController::CgiResponse:0xb65c9930 - Dan Rosenstark
CgiResponse?使用ActionController :: CgiResponse.out。 - phresus
"<%="hello" %>"有什么问题吗?" - Can Berk Güder
这是一个令人困惑的问题 - <%= "hello" %> 对你来说有什么问题? - DanSingerman
你的视图中不应该包含太多代码。大部分代码可能属于你的控制器。 - Can Berk Güder
显示剩余2条评论
4个回答

15

你尝试过使用concat吗?

我在浏览Rails文档时看到过这个。由于我是Rails的新手,所以不太确定。


13

你需要写的是什么

<% concat "bank" %>

现在你可以做这样的事情

<%
  10.times do
    concat "cat"
  end
%>

为十只猫


1
没错,在这种情况下使用concat而不是<%=是有意义的。感谢您的回答。 - Dan Rosenstark
是的,我自己也不知道那个绑定是什么。 - Dan Rosenstark

6

使用concat函数,我已经尝试过并且它可以工作。 然而,如果您需要使用HTML字符,请使用:

concat(sanitize("STRING"))

或者打开你的app/helpers/application_helper.rb并写入:

def echo(str)
    concat sanitize str
end

所以你只需要输入以下命令:echo "你好<br />\n"

如果您不进行数据清洗,会发生什么? - Dan Rosenstark

0
你需要使用"print"或者"puts"来打印,根据你是否想要换行(可能不需要)。几乎每个对象都实现了 .to_s 方法,该方法同样可用,虽然我的感觉是你可能有更好的方法来完成你所需的任务。这方面还有其他的上下文信息吗?

谢谢,不,我想在客户端上看到它,而不是在控制台上。 - Dan Rosenstark
它在控制台上工作没有任何问题。<%=puts“这里可以放置任何Ruby代码”%> - phresus
1
-1, puts(或p)默认输出到STDOUT,而响应并不是在那里生成的。 <%= puts ...%>将在响应中产生一个空字符串,puts(或p)返回nil和nil.to_s ==“”。 - Samuel
谢谢Samuel。我从来没有对一个问题有过这么多错误的答案。在我应该做什么和我能做什么之间,许多回答者迷失了方向。 - Dan Rosenstark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接