我一直在关注 Railscast #270 发现 Rails Cast #270关于在 Rails 3.1 中实现身份验证。我想要做的是让我的模板能够在用户登录时显示不同的链接。它应该看起来像这样。
If user logged in
Display link to Profile
Display logout
If user logged out
Display link to register
Display link to login
我想我可以从 theRailsTutorial 中找出指向各个地方的链接,但我仍然不知道如何判断用户是否已登录。
使用 Rails 教程我找到了这个片段
<% if signed_in? %>
<li><%= link_to "Profile", current_user %> sfsdfsdf</li>
<% end %>
当我将以下内容放入我的 session 助手时,这不起作用:
def signed_in?
!@current_user.nil?
end
您将如何进行这项工作?
最佳答案
使用 current_user
.
就这样
<% if current_user %>
<li><%= link_to "Profile", current_user %> sfsdfsdf</li>
<% end %>
顺便说一句,在 HAML 中这只是
-if current_user
%li=
link_to "Profile", current_user, sfsdfsdf
(结尾是隐含的——对于 HTML <li>
标签(即 </li>
)和 ruby if
语句!)
对于任何不使用 HAML 的人来说,这应该会让你胃口大开 :)
current_user 本身使用@current_user 并在您的应用程序 Controller 中进行设置,如下所示:
helper_method :current_user
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
关于ruby-on-rails - 在 Rails 中登录时显示不同的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7897735/