2009-09-15 81 views
0

我在部分视图文件_status.html.erb中有以下代码。为什么Ruby on Rails不呈现一些文本?

<%= 
    if session[:user].nil? 
     "welcome new user" 
     link_to('Sign in', login_path) 
    else 
     render (:text => "user name:") 
     h(session[:user].name) 
    end 
%> 

,我看到,虽然唯一是session[:user].name值。有什么建议么?

回答

3

你真的不需要调用渲染,除非它位于另一部分。

在ERB:

<% if session[:user].nil? -%> 
    welcome new user 
    <%= link_to('Sign in', login_path) %> 
<% else -%> 
    user name 
    <%= h(session[:user].name) %> 
<% end -%> 

或者在Haml的:

- if session[:user].nil? 
    welcome new user 
    = link_to('Sign in', login_path) 
- else 
    user name 
    = h(session[:user].name) 
+0

这是伟大的,谢谢。直到现在我还没有注意到 - %>部分。谢谢! – cbrulak 2009-09-15 21:58:25

+0

这是<%= <%重要。 - %>可以简单地抑制否则会发送到输出的空白行。 – jdl 2009-09-15 22:05:03

相关问题