ruby-on-rails - 在 Rails 中登录时显示不同的文本

标签 ruby-on-rails ruby ruby-on-rails-3 authentication railscasts

我一直在关注 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/

相关文章:

ruby-on-rails-3 - Rails 3 - 将文件上传到公共(public)目录

ruby-on-rails - 如何从少数 XML 节点中删除命名空间

ruby-on-rails - 在 RoR 中构建翻译的有效方法?

ruby-on-rails - 将SASS生成的CSS存储在应用程序和源代码管理中的最佳方法是什么?

ruby-on-rails - ruby rails : Downloading files with multiple dots in filename (uploaded using Carrierwave)

ruby-on-rails - ruby on rails 中的数据库知识

ruby-on-rails - 如何使用 ruby​​ 在新窗口中打开链接?

ruby-on-rails - 有人可以帮助我理解node.js 以及如何以及为什么我可以将它与rails 这样的框架一起使用吗?

ruby-on-rails-3 - 如何从表记录的子集创建 Rails 模型

javascript - 在 Ruby on Rails 中使用 rjs 实现 AJAX