0

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

user_signed_in?是 Devise 的辅助方法。我认为。

我如何真正做到这一点。我试过这个:

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

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

4

1 回答 1

5

您应该多研究一下 Ruby 语法(例如,这里)。试试这个:

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

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

另请注意,由于这是一个视图文件——因此基本上是一个增强的 html 文件——你不需要像“登录”这样的原始内容的“放置”。实际上, puts 不会将内容带到浏览器,而是将内容带到 Rails 应用程序中 STDOUT 引导的任何位置(记录器?不确定)

于 2013-01-15T10:05:28.860 回答