我正试图在连接到我自己的服务器(本地)时执行某些操作。 我从网站上找到了request.env,所以我使用该数组来比较我的IP。这个ruby语句有什么问题?
<%
if request.env['HTTP_HOST']!="127.0.0.1"
puts request.env['HTTP_HOST']
else
puts "its Local!"
end
%>
当我在上面Rails3中运行,我什么也没得到印... 我是新来的红宝石& Rails3中..
我正试图在连接到我自己的服务器(本地)时执行某些操作。 我从网站上找到了request.env,所以我使用该数组来比较我的IP。这个ruby语句有什么问题?
<%
if request.env['HTTP_HOST']!="127.0.0.1"
puts request.env['HTTP_HOST']
else
puts "its Local!"
end
%>
当我在上面Rails3中运行,我什么也没得到印... 我是新来的红宝石& Rails3中..
puts
将写入服务器在这种情况下,不响应。所以你应该在服务器的日志中查找你的消息。
当您想要在网页中输出时,请使用<%= %>
而不是<% %>
。输出将是表达式的返回值,所以你不需要puts
。
<%=
if request.env['HTTP_HOST']!="127.0.0.1"
request.env['HTTP_HOST']
else
"its Local!"
end
%>
请注意,您还可以使用local?
方法,而不是直接检查环境。
<%=
if request.local?
"its Local!"
else
request.env['HTTP_HOST']
end
%>
如果你喜欢简洁,你可以做到这一点作为一个行:
<%= if request.local? then "its Local!" else request.env['HTTP_POST'] end %>
为了获得更大的视图简洁,使用一个辅助方法:
<%= ip_or_local %>
其中匹配你看到的帮手:
def ip_or_local
if request.local?
"its Local!"
else
request.env['HTTP_HOST']
end
end
对于这种简单的情况,它可能是矫枉过正的,但通常当你开始在你的视图中看到大量的代码时,是时候考虑在助手中隐藏某些东西了。
是否要打印到日志或视图?
如果你把东西分解成单独的erb标签,它可能会更清晰。
<% if local? %>
<%= "Text for local" %>
<% else %>
<%= "Text for remote" %>
<% end -%>
您需要使用<%=%>标记为要打印的线条和<%%>标签为您希望逻辑,像条件语句行。
如果您是第一次使用rails,您应该查看从头开始的视频中的peepcode rails,它们相当便宜,许多rails开发人员建立了他们的基础。 Railscasts也是小吃大小的教程,很容易让你通过大量的基础知识。
推荐阅读:
RUBY: 红宝石镐 红宝石路
的Rails: Rails的方式 头在轨道上
希望我的一些帮助第一台红宝石。
我没有投票给你,但这个答案没有解决原来的问题,即“使用<%= %>而不是<% %>”。 – 2010-10-20 13:25:45
O.P.感兴趣的是为什么它没有打印任何东西。 puts永远不会将输出打印到响应中,仅仅是日志 – 2010-10-20 15:20:11