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 saving 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 bit and I'm try to do it.
Step by step :
Create controller for customize registration and inherit from default registration devise
# 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])
# another stuff here
end
end
Create controller for customize session and inherit from default session devise
# 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| %>
<%# another stuff here %>
<% end %>
<%= form_for(resource, :as => resource_name, :url => user_registration_path(resource_name)) do |f| %>
<%# another stuff here %>
<% end %>
Override devise mapping method in application helper
module ApplicationHelper
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
end
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
Hope this help!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With