我已将登录和注册表单移至我的主页(根目录)。他们完成了自己的工作,用户可以登录并成功注册。但是,如果在注册和密码不匹配的情况下呈现错误,则会将用户重定向到路由:/ user / sign_up以显示该错误。 如何在不将用户重定向到注册页面的情况下在同一页面(主页)中显示错误? 我已经按照here的步骤进行了操作。
这是我的home.html.erb文件:
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
这是我的路线:
devise_for :user
root 'pages#home'
PS。我已经尝试将注册路由更改为主路由,但错误仍然会将用户带到/ user / sign_up
答案 0 :(得分:1)
好的,所以我按照以下教程解决了这个问题:
注册
http://natashatherobot.com/devise-sign-up-ajax-rails/
登录
http://natashatherobot.com/devise-rails-sign-in/
答案 1 :(得分:0)
你需要:flash和:在application.html.erb上注意如下:
<p class="notice alert alert-info text-center"><%= notice%></p>
<% elsif alert%>
<p class="alert alert alert-warning text-center"><%= alert %></p>
Devise使用带有I18n的闪存消息和闪存键:notice和:alert。要自定义您的应用,您可以设置您的语言环境文件:
然后,您可以自定义警报和消息:
en:
devise:
sessions:
user:
signed_in: 'Welcome user, you are signed in.'
admin:
signed_in: 'Hello admin!'
答案 2 :(得分:0)
通过ajax分两步提交表格
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), remote: true) do |f| %>
...
<% end %>
class RegistrationsController&lt;设计:: RegistrationsController
def create
build_resource(sign_up_params)
if resource.save
respond_to do |format|
format.html {
...
}
format.js {
...
}
end
end
end
这实际上不是,但应该给你一个想法