0

我使用 devise gem 对我的 rails 应用程序中的用户进行身份验证,我决定使用根页面作为登录页面。我资助解决方案,如果登录不成功,如何将用户重定向到 root url(下面的代码),但我找不到如何设计,它应该使用 root url 作为登录页面而不是 /users/sign_in 上的单独登录页面

class CustomFailure < Devise::FailureApp
  def redirect_url
    if warden_options[:scope] == :user
      root_path
    else
      root_path
    end
  end
  def respond
    if http_auth?
      http_auth
    else
      redirect
    end
  end
end
4

2 回答 2

2

如果您想在页眉或其他所有页面中使用登录表单,则必须编写自己的表单。但是您可以复制正常设计登录表单的代码。

要获得设计视图,您可以在控制台中编写:

rails generate devise:views

然后,您可以从 app/views/devise/sessions/new.html.erb 复制设计登录表单并将其粘贴到视图中或部分中。

这可能是这样的:

<%= form_for(User.new, :url => user_session_path) do |f| %>
  <%= f.text_field :email %>
  <%= f.password_field :password %>
  <%= f.check_box :remember_me %>
  <%= f.label :remember_me %>
  <%= f.submit 'Sign in' %>
  <%= link_to "Forgot your password?", new_password_path('user') %>
<% end %>

将变量更改为 .new 或必须在要使用表单的 Controller 中定义变量是很重要的。在我的示例中,我编写了 User.new。

有关更多信息,请查看此操作指南: https ://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app

于 2013-10-18T08:42:00.387 回答
0

如果您的表单正常工作,您可能正在寻找有关设计路线的信息,特别是有关路径的信息:

devise_for :users, :path => '', :controllers => {:sessions => 'sessions', :registrations => 'registrations'}, :path_names => { :sign_in => 'login', :password => 'forgot', :confirmation => 'confirm', :unlock => 'unblock', :registration => 'register', :sign_up => 'new', :sign_out => 'logout'}

更多信息: https ://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes

于 2013-10-18T08:45:21.293 回答