Rails Devise自定义注册和登录在同一页面的问题 [英] Rails Devise Custom Registration and Login at the same page issues

查看:95
本文介绍了Rails Devise自定义注册和登录在同一页面的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的Ruby应用程序中,我使用'devise'gem进行身份验证,但是我想自定义视图,在自定义每个视图之后生成设计视图,并将其保存在devise文件夹中作为部分,因为我想使他们在另一个意见。



所以我的问题是, new / sessions 正在工作,但是当我尝试注册时,似乎表单发帖有问题。请参阅登录表单



我读了很多关于如何在设计文档中自定义布局,但是我有点困惑如何实现,使表单渲染工作外的设计视图夹。

解决方案

其实你的问题和这个问题,但我会解释一下,我试着去做。




  • 首先,您应该自定义注册设计。 (自定义设计


  • 其次,您可以在注册表单旁边显示一个自定义登录表单。 ( wiki







示例一步一步我的示例项目(刚才我尝试构建应用程序)



自定义注册设计和会话路由

  devise_scope:user do 
#using login path for registration
get'/ login'=> 'registrations#new',:as => :new_user_registration
post'/ signup'=> 'registrations#create',:as => :user_registration
post'/ signin'=> 'sessions#create',:as => :user_session
end

创建控制器以自定义注册和会话设计,示例:

 #个自定义注册控制器
class RegistrationsController< Devise :: RegistrationsController
layout'login'
skip_before_filter:require_no_authentication
before_filter:resource_name

def resource_name
:user
end

def new
@user = User.new
end

def create
@user = User.new(params [:user])
...
...
end
end

#自定义会话控制器
class SessionsController< Devise :: SessionsController
def create
super
end
end

创建注册视图 app / registrations / new.html.erb



将登录和注册表单放入 app / registrations / new.html.erb (在注册表格旁边看起来像您的项目)

 <%= form_for(resource, as => resource_name,:url => user_session_path(resource_name))do | f | %GT; 
....
<%end%>

<%= form_for(resource,:as => resource_name,:url => user_registration_path(resource_name))do | f | %GT;
....
<%end%>

最后,将其放入应用程序助手

  def resource_name 
:user
end

def resource
@resource || = User.new
end

def devise_mapping
@devise_mapping || = Devise.mappings [:user]
end

希望这个帮助!


In my Ruby app, I am using the 'devise' gem for authentication but I want to customize the views, generate the devise views after customizing each of them and saveing them in the devise folder as a partial, because I want to render them in another views.

So my issues are, the new/sessions is working, but when I try to sign up, it seems there's an issue with the form posting. See login form here.

I read a lot about how to customize the layout in the devise documentation, but I am a little confused on how to implement to make the form render work outside the devise views folder.

解决方案

Actually, your question is the same as this question, but I'll explain a little and I'm try to do it.

  • First, you should customize registration devise. (customize devise)

  • Second, you can display a custom login form beside on registration form. (wiki)


Example step by step my example project (just now i tried build app)

Route for customize registration devise and session

devise_scope :user do
  # using login path for registration
  get '/login' => 'registrations#new', :as => :new_user_registration
  post '/signup' => 'registrations#create', :as => :user_registration
  post '/signin' => 'sessions#create', :as => :user_session
end

Create controller for customize registration and session devise, example :

# customize registration controller
class RegistrationsController < Devise::RegistrationsController
  layout 'login'
  skip_before_filter :require_no_authentication
  before_filter :resource_name

  def resource_name
    :user
  end

  def new  
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
    ...
    ...
  end
end

# customize session controller
class SessionsController < Devise::SessionsController
  def create
     super
  end
end

Create registration views app/registrations/new.html.erb

Put login and registration form into app/registrations/new.html.erb. (beside on registration form looks like your project)

<%= form_for(resource, :as => resource_name, :url => user_session_path(resource_name)) do |f| %>
    ....
<% end %>

<%= form_for(resource, :as => resource_name, :url => user_registration_path(resource_name)) do |f| %>
    ....
<% end %>

And last, put this into application helper

def resource_name
   :user
end

def resource
   @resource ||= User.new
end

def devise_mapping
   @devise_mapping ||= Devise.mappings[:user]
end

Hope this help!

这篇关于Rails Devise自定义注册和登录在同一页面的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆