用Rails设计4

Bra*_*cil 30 ruby-on-rails bundler devise

Devise背后的团队通过blogpost http://blog.plataformatec.com.br/2013/05/devise-and-rails-4/宣布 它发布了一个与Rails 4兼容的版本,称之为'3.0 rc' .在同一篇博文中,它也表示正在发布Devise 2.2.4.

我正在尝试构建一个Rails 4应用程序.当我这样做时gem install Devise,它安装了2.2.4,而不是与Rails 4兼容的版本.

Fetching: devise-2.2.4.gem (100%) 
Run Code Online (Sandbox Code Playgroud)

我从blogpost中关于强参数的评论中假设我不能与Rails 4兼容.

我查看了Devise的github页面,但对我来说,如何安装与Rails 4兼容的版本并不明显.你能帮忙吗?

https://github.com/plataformatec/devise

注意,我试过了

gem install devise --version 3.0.0.rc1
Run Code Online (Sandbox Code Playgroud)

但它说

ERROR:  Could not find a valid gem 'devise' (= 3.0.0.rc1) in any repository
ERROR:  Possible alternatives: devise
Run Code Online (Sandbox Code Playgroud)

ser*_*erg 92

在本回答的时候,Devise现在与开箱即用的Rails 4兼容.

我们的最终目标是让用户能够注册,登录和注销网站.我们还将创建一个小型局部视图,让我们知道我们是否已登录或退出.


安装Devise gem.

打开你的Gemfile并安装Devise gem.

gem 'devise'
Run Code Online (Sandbox Code Playgroud)

然后在你的终端运行bundle install命令来安装gem.

$ bundle install
Run Code Online (Sandbox Code Playgroud)

运行一些Devise生成器来设置初始配置.

从终端运行此命令:

rails generate devise:install
Run Code Online (Sandbox Code Playgroud)

此生成器安装初始化程序,用于配置Devise的所有可用设置.

生成您的用户模型.

接下来我们需要生成用户模型.我将它命名User,但你可以命名为任何你喜欢的,只需更换UserWhatever.

rails generate devise User
rake db:migrate
Run Code Online (Sandbox Code Playgroud)

为Development.rb配置默认URL选项

在里面config/environments/development.rb,将Action Mailer的默认URL设置为localhost:

config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Run Code Online (Sandbox Code Playgroud)

确保在Routes.rb中声明了根路由

你需要确保它routes.rb有一个默认的根路由 - 如果你没有,请设置它!

root to: 'home#index'
Run Code Online (Sandbox Code Playgroud)

创建部分视图以查看我们是否已登录.

在您的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 %>
Run Code Online (Sandbox Code Playgroud)

并在你的layout(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>
Run Code Online (Sandbox Code Playgroud)

确保你停止并重新启动服务器,否则你会发现各种令人讨厌的错误!在更新gemfile或更改环境配置文件中的任何内容时,最好重新启动本地服务器.

有了这一切,您应该能够注册,登录并从您自己的Rails网站注销.

如果您有任何问题,请随时在下面发表评论,我会尽力提供帮助.

  • 这是一个相当简洁但直截了当的解释.只觉得它应该得到一点点投票. (5认同)

Zai*_*uch 30

更新于2013年9月17日:主分支现在与Rails 4兼容.无需搜索其他版本.

看看github repo,看起来你想要版本3.0.0.rc(没有1).所以你会想要的

gem install devise --version "3.0.0.rc"
Run Code Online (Sandbox Code Playgroud)

或者,在你的gemfile中:

gem 'devise', '3.0.0.rc'
Run Code Online (Sandbox Code Playgroud)