我正在尝试在我的主页上设置登录表单.我设法通过遵循Wiki来做到这一点
但是,如果登录信息不正确,/devise/session/new.html.erb则会进行渲染.我不希望这样.我希望我的用户被重定向到root_url 带有 flash消息中的WITH错误.
我能够覆盖registrations_controller.rb另一个功能,但覆盖sessions_controller.rb给我带来了很多麻烦.
我想改变做我想做的事情是什么?after_sign_in_path如果登录正确,我仍然希望将用户重定向到.原始控制器在这里
到目前为止,我知道我必须在我的身上做到这一点 routes.rb
devise_for :users, :controllers => { :registrations => "registrations", :sessions => "sessions" }
我也成立了 controller/sessions_controller.rb
class SessionsController < Devise::SessionsController
# GET /resource/sign_in
def new
resource = build_resource
clean_up_passwords(resource)
respond_with_navigational(resource, stub_options(resource)){ render_with_scope :new }
end
end
Run Code Online (Sandbox Code Playgroud)
我觉得我必须改变render_with_scope :new但是......怎么样?使用该版本,我收到错误undefined method 'users_url' for #<SessionsController:0x5072c88>
好吧,我会等你的宝贵帮助
PS:这篇文章帮助我处理了订阅错误.也许它有助于登录错误?
====编辑====
根据第一个答案建议,我还添加到initializers/devise.rb:
config.warden do |manager|
manager.failure_app = CustomFailure
end …Run Code Online (Sandbox Code Playgroud) 我想在我的项目中更新/编辑我自己的表单中的设计用户,但问题是我无法在"request.referer"上重定向更新.
我已经读过了,但它对我不起作用:https://github.com/plataformatec/devise/wiki/How-To:-Customize-the-redirect-after-a-user-edits-their-profile ......以及其他维基页面.
好的,所以我的代码是:
#/views/backend/perso.html.erb
<%= form_for(@user, :url => registration_path(@user), :html => { :method => :put }) do |f| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(form.errors.count, "error") %> prohibited this data from being saved:</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
# Other fields ...
<div class="field">
<%= f.label :email %><br …Run Code Online (Sandbox Code Playgroud) 一切都在标题中,我希望能够删除一段时间后尚未确认的帐户.
我正在使用:
我的Devise User模型具有以下属性:
devise :database_authenticatable, :confirmable, :registerable, :recoverable, :rememberable, :trackable, :validatable
Run Code Online (Sandbox Code Playgroud)
和我的 db/schema.rb
create_table "users", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "encrypted_password", :limit => 128, :default => "", :null => false
t.string "reset_password_token"
t.timestamp "reset_password_sent_at"
t.timestamp "remember_created_at"
t.integer "sign_in_count", :default => 0
t.timestamp "current_sign_in_at"
t.timestamp "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.timestamp "created_at"
t.timestamp "updated_at"
t.string "confirmation_token"
t.timestamp "confirmed_at"
t.timestamp "confirmation_sent_at"
end
Run Code Online (Sandbox Code Playgroud)
小小的奖励 - 在我的User …
这是我的问题.
在我的控制器中,我检查URL中给出的参数是否是有效用户,如果不是我希望将访问者重定向到"经典"404页面.这是我的控制器:
def home
@user = User.find_by_domain(params[:domain])
if !@user.nil?
respond_to do |format|
format.html # home.html.erb
end
else
render(:file => "#{RAILS_ROOT}/public/404.html", :status => 404, :layout => false)
end
end
Run Code Online (Sandbox Code Playgroud)
然而,当@user就是nil我得到以下错误:
Template is missing
Missing template D:/Project/public/404.html with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths
我没有修改Rails生成的404页面:
<!DOCTYPE html>
<html>
<head>
<title>The page you were looking for doesn't exist (404)</title>
<style type="text/css">
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; …Run Code Online (Sandbox Code Playgroud)