0

我创建控制器:

class SigninController < ApplicationController
  def index
  end
  def create
    @user = User.find_by_email(params[:user][:email])
    if @user 
      ....
      sign_in(:user, @user)
    else
      @user = User.new(params...)
      @user.save
      ...
    end
  end
end

我正确地调用sign_in方法吗?

登录/index.html.erb:

<h2>Sign in</h2>
<%= form_for(User.new, :as => :user, :url => "signin") do |f| %>
  <div><%= f.label :email %><br />
  <%= f.email_field :email %></div>
  <div><%= f.label :password %><br />
  <%= f.password_field :password %></div>
  <br>
  <div><%= f.submit "Sign in" %></div>
<% end %>

如何调用 devise 的 devise sign_in 和 sign_up 方法?

4

2 回答 2

3

试试这个app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  def after_create_path_for(resource)
    sign_in(:user, resource)
  end 
end

这只是一种猜测。我不知道它是否会起作用。

于 2012-10-12T13:50:20.840 回答
0

您可以,但在大多数情况下,您不应该创建自定义控制器来登录/注销用户。设计具有为您实现此功能的 session_controller。查看设计文档和维基,它有大量的文档。您还可以在那里找到如何自定义视图和控制器行为。

更新

如果需要将两种表单(登录和注册)放在一个视图上,您​​可以自定义设计视图。表单动作可能指向不同的标准控制器。我建议使用用户/注册/新表单作为基本表单并添加使用/会话/新表单。

于 2012-10-12T13:27:36.257 回答