设计错误消息重定向到不需要的路由

时间:2014-10-14 21:35:10

标签: ruby-on-rails ruby-on-rails-3 devise

我已将登录和注册表单移至我的主页(根目录)。他们完成了自己的工作,用户可以登录并成功注册。但是,如果在注册和密码不匹配的情况下呈现错误,则会将用户重定向到路由:/ 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

3 个答案:

答案 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分两步提交表格

通过ajax

提交登录/注册表格
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), remote: true) do |f| %>
...
<% end %>

覆盖会话控制器以响应非html格式

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

这实际上不是,但应该给你一个想法