ruby-on-rails – Rails设计自定义注册和登录同一页面问题

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails设计自定义注册和登录同一页面问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的 Ruby应用程序中,我使用’devise’gem进行身份验证,但我想自定义视图,在自定义每个视图后生成设计视图并将它们作为部分保存在devise文件夹中,因为我想要将它们呈现在另一种观点.

所以我的问题是,新的/会话正在运行,但是当我尝试注册时,表单发布似乎存在问题.请参见此处的login form.

我阅读了很多关于如何在设计文档中自定义布局的内容,但是我对如何实现使表单渲染在devise views文件夹之外工作感到困惑.

解决方法

实际上,你的问题与 this question相同,但我会解释一下,我试着去做.

>自定义注册设计. (customize devise)
>在注册表单旁边创建一个自定义登录表单. (wiki)

一步步 :

>创建用于自定义注册的控制器并从默认注册设备继承

# 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,: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

希望这有帮助!

猜你在找的Ruby相关文章