2013-11-24 17 views
0

我已在导航栏中注册/登入。我正在使用Devise。Rails + Devise:如何为整个网站访问登录实例?

我的问题是,我不知道如何设置变量实例,这将可以访问整个应用程序(跨所有控制器和操作)。

对于注册,我没有以下内容:

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    before_filter :load_registration 

    def load_registration 
    @user = User.new 
    end 
end 

这似乎是工作。当我点击链接时,会弹出一个窗口,在窗口中显示注册表单(如果用户未登录)。但如何做同样的登录? 。

回答

0

这听起来像你正在寻找current_user如果一个用户登录如果是这样,你的ApplicationController会更改为:

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    before_filter :load_registration 

    def load_registration 
    @user = current_user || User.new 
    end 
end 

这样,如果current_user可用,@user将被设置为它否则User的新实例将被设置为@user

然而,这违背了什么设计部分为你做,因为你通常应该在你的应用程序中使用current_user至于是谁在当前登录的辅助工具。

0

我不知道你问什么,但如果你想链接到Devise的注册或登录页面,你不需要任何实例变种。这取决于你的资源,但应该是这样的:

<% unless current_user %> 
    <%= link_to "Login", new_user_session_path %> 
    <%= link_to "Register", new_user_registration_path %> 
<% end %> 

运行rake routes了解您的设计路径。

如果你想把登录或只是在导航栏注册表单,您可以用

<%= form_for(resource_name, resource, :url => session_path(resource_name)) do |f| %>

<%= form_for(resource_name, resource, :url => registration_path(resource_name)) do |f| %>

做到这一点,包括设计助手在你的应用程序帮手:

def resource_name 
    :user 
end 

def resource 
    @resource ||= User.new 
end