if user_signed_in?放一些文字 - 设计

时间:2013-01-15 09:58:33

标签: ruby-on-rails devise puts

我有这个想法,当user_signed_in?为真时,我希望“登录”显示在我的网页的上角,但当user_signed_in?为假时,我希望它只是简单地放“登录”。

user_signed_in?是Devise的辅助方法。我想。

我如何实际完成这项工作。我试过这个:

<%= if user_signed_in? => true puts "Logged In" else puts "Login" %>
<% end %>
<% end %>

但这不起作用。有任何想法吗 ?

1 个答案:

答案 0 :(得分:5)

你应该多看一下Ruby语法(例如here)。试试这个:

<% if user_signed_in? %>
  Logged In
<% else %>
  <%= link_to 'Login', ... %> # substitute the ... for whatever path goes to login
<% end %>

请注意,&lt;%= part仅在嵌入式ruby实际返回将由浏览器呈现的内容(也称为转换为html)时使用。由于您示例中的所有嵌入式ruby都只是控制流,因此不要使用=,因为浏览器实际上看不到任何内容。但是,link_to方法返回一个链接,这是实际呈现的内容,所以我们需要=。

另请注意,由于这是一个视图文件 - 因此基本上是一个增强的html文件 - 您不需要像“登录”这样的原始内容使用“puts”。事实上,puts不会将内容带到浏览器,而是转移到STDOUT在Rails应用程序中引领的地方(记录器?不确定)