截至本答案发布时,Devise 现在与 Rails 4 开箱即用兼容。
我们的最终目标是让用户能够注册、登录和退出网站。我们还将创建一个小的局部视图,让我们知道我们是否已登录或退出。
安装设计 gem。
打开Gemfile
并安装 Devise gem。
gem 'devise'
然后在您的终端中运行bundle install
命令来安装 gem。
$ bundle install
运行一些设计生成器来设置初始配置。
从您的终端运行此命令:
rails generate devise:install
该生成器安装了配置所有 Devise 可用设置的初始化程序。
生成您的用户模型。
接下来我们需要生成我们的用户模型。我要给它命名,User
但你可以随意命名,只需替换User
为Whatever
.
rails generate devise User
rake db:migrate
为 Development.rb 配置默认 URL 选项
在 内部config/environments/development.rb
,将 Action Mailer 的默认 URL 设置为 localhost:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
确保您在 Routes.rb 中声明了根路由
你需要确保它routes.rb
有一个默认的根路由——如果你没有,设置它!
root to: 'home#index'
创建一个局部视图以查看我们是否已登录。
在您的views/layouts
文件夹中创建一个名为的文件_user_widget.html.erb
并将此代码复制到:
<% if user_signed_in? %>
<p>Welcome <%= current_user.email %></p>
<%= link_to 'Logged In [click to logout]', destroy_user_session_path, :method => :delete %>
<% else %>
<p>You are not signed in.</p>
<%= link_to 'Login', new_user_session_path %>
<% end %>
并在您的布局 ( views/layouts/application.html.erb
) 中调用它:
<!DOCTYPE html>
<html>
<head>
<title>FacebookAuthTest</title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
<%= yield %>
<%= render 'layouts/user_widget' %>
</body>
</html>
确保您停止并重新启动服务器,否则您会发现各种讨厌的错误!当您更新 gemfile 或更改环境配置文件中的任何内容时,最好重新启动本地服务器。
完成所有这些后,您应该能够从您自己的 Rails 网站注册、登录和注销。
如果您有任何问题,请随时在下面发表评论,我会尽力提供帮助。