Rails Devise自定义注册和登录在同一页面的问题 [英] Rails Devise Custom Registration and Login at the same page issues
问题描述
所以我的问题是, new / sessions
正在工作,但是当我尝试注册时,似乎表单发帖有问题。请参阅登录表单。
我读了很多关于如何在设计文档中自定义布局,但是我有点困惑如何实现,使表单渲染工作外的设计视图夹。
其实你的问题和这个问题,但我会解释一下,我试着去做。
示例一步一步我的示例项目(刚才我尝试构建应用程序)
自定义注册设计和会话路由
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屋!