我有这个想法,我希望“登录”在网页的上角显示user_signed_in?
为真,但当user_signed_in?
为假时,我希望它只简单地输入“登录”。
user_signed_in?
是 Devise 的辅助方法。我认为。
我如何真正做到这一点。我试过这个:
<%= if user_signed_in? => true puts "Logged In" else puts "Login" %>
<% end %>
<% end %>
但这不起作用。有任何想法吗 ?
我有这个想法,我希望“登录”在网页的上角显示user_signed_in?
为真,但当user_signed_in?
为假时,我希望它只简单地输入“登录”。
user_signed_in?
是 Devise 的辅助方法。我认为。
我如何真正做到这一点。我试过这个:
<%= if user_signed_in? => true puts "Logged In" else puts "Login" %>
<% end %>
<% end %>
但这不起作用。有任何想法吗 ?
您应该多研究一下 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 引导的任何位置(记录器?不确定)