Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何使方法在分部中可用?_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 如何使方法在分部中可用?

Ruby on rails 4 如何使方法在分部中可用?,ruby-on-rails-4,Ruby On Rails 4,我是一名rails初学者,正在学习rails 4,我正在尝试通过实践来学习。我正在制作一个简单的博客,我想要一些简单的用户身份验证。我试图在这里学习,所以我不想实现Desive等。我有一个部分头,负责我的网站头,我试图把一个链接到注销,只有当用户登录时才会显示。我有一个简单的会话控制器,它有一个用于注册表单的新操作,一个创建操作,在匹配电子邮件和密码后设置当前用户,并设置会话[:user\u id]=@current\u user.id,以及一个取消会话的销毁操作。在我的应用程序控制器中,我有这

我是一名rails初学者,正在学习rails 4,我正在尝试通过实践来学习。我正在制作一个简单的博客,我想要一些简单的用户身份验证。我试图在这里学习,所以我不想实现Desive等。我有一个部分头,负责我的网站头,我试图把一个链接到注销,只有当用户登录时才会显示。我有一个简单的会话控制器,它有一个用于注册表单的新操作,一个创建操作,在匹配电子邮件和密码后设置当前用户,并设置会话[:user\u id]=@current\u user.id,以及一个取消会话的销毁操作。在我的应用程序控制器中,我有这样一个方法

def logged_in?

  !session[:user_id].nil?

end
在my_header.html.erb partial中,我有

<% if logged_in? %>

  (My link)

<% end %>

(我的链接)

当我加载页面时,它告诉我它找不到“logged_in?”方法。有人知道为什么吗?谢谢

默认情况下,控制器上的方法不向视图公开(您的分部是其中的一部分)

2种解决方案:

  • 创建您的
    logged\u in?
    方法作为助手方法,例如在
    AuthenticationHelper
    中。但是,执行此操作时,您无法从控制器访问它
  • 使用以下命令向视图公开控制器方法:

    class ApplicationController

  • 默认情况下,控制器上的方法不会公开给视图(您的分部是其中的一部分)

    2种解决方案:

  • 创建您的
    logged\u in?
    方法作为助手方法,例如在
    AuthenticationHelper
    中。但是,执行此操作时,您无法从控制器访问它
  • 使用以下命令向视图公开控制器方法:

    class ApplicationController

  • 你就不能用:

    if @current_user
    

    你就不能用:

    if @current_user