在我的 Ruby 应用程序中,我使用“设计”gem 进行身份验证,但我想自定义视图,在自定义每个视图后生成设计视图并将它们作为部分保存在设计文件夹中,因为我想将它们呈现在另一种看法。
所以我的问题是,它new/sessions
正在工作,但是当我尝试注册时,表单发布似乎存在问题。在此处查看登录表格。
我在设计文档中阅读了很多关于如何自定义布局的内容,但我对如何实现使表单渲染在设计视图文件夹之外工作感到有些困惑。
在我的 Ruby 应用程序中,我使用“设计”gem 进行身份验证,但我想自定义视图,在自定义每个视图后生成设计视图并将它们作为部分保存在设计文件夹中,因为我想将它们呈现在另一种看法。
所以我的问题是,它new/sessions
正在工作,但是当我尝试注册时,表单发布似乎存在问题。在此处查看登录表格。
我在设计文档中阅读了很多关于如何自定义布局的内容,但我对如何实现使表单渲染在设计视图文件夹之外工作感到有些困惑。
实际上,您的问题与此问题相同,但我会稍微解释一下,我会尝试这样做。
一步步 :
创建用于自定义注册的控制器并从默认注册设计继承
# 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
为自定义会话创建控制器并从默认会话设计继承
# customize session controller
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| %>
<%# another stuff here %>
<% end %>
<%= form_for(resource, :as => resource_name, :url => user_registration_path(resource_name)) do |f| %>
<%# another stuff here %>
<% end %>
覆盖应用程序助手中的设计映射方法
module ApplicationHelper
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
end
自定义注册设备和会话的路由
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
希望这有帮助!