我有这个想法,当user_signed_in?
为真时,我希望“登录”显示在我的网页的上角,但当user_signed_in?
为假时,我希望它只是简单地放“登录”。
user_signed_in?
是Devise的辅助方法。我想。
我如何实际完成这项工作。我试过这个:
<%= if user_signed_in? => true puts "Logged In" else puts "Login" %>
<% end %>
<% end %>
但这不起作用。有任何想法吗 ?
答案 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应用程序中引领的地方(记录器?不确定)