gpt4 book ai didi

ruby-on-rails - Rails 3,设计 : Using different layout for signup, 登录页面

转载 作者:行者123 更新时间:2023-12-04 05:47:22 24 4
gpt4 key购买 nike

我想为注册和登录页面呈现不同的布局。

There's s similar thread that deals with this problem, but it's not exactly the same.

我需要能够仅为注册和登录页面呈现不同的布局,而不是 Controller 中的所有其他操作。

users/registrations_controller.rb

class Users::RegistrationsController < Devise::SessionsController
def new
render :layout => "auth"
end
end

我的路线

MasterCard::Application.routes.draw do
devise_for :users, :controllers => { :registrations => "users/registrations" }, :path => "users", :path_names => { :sign_in => 'login', :sign_out => 'logout' }

devise_scope :user do
get "login", :to => "users/sessions#new"
# post "logout", :to => "users/sessions"
end

root :to => 'pages#home'
match '/about' => 'pages#about'
end

这是我在注册页面时遇到的错误。

未定义的方法nil:NilClass 的错误

最佳答案

首先,您的意思是继承 Devise::RegistrationsController 而不是 Devise::SessionsController

重写设计 Controller 操作似乎有点毛茸茸。您可以通过覆盖 RegistrationsController 使用的默认布局来避免这种情况:

class Users::RegistrationsController < Devise::RegistrationsController
layout "auth"
end

至于为什么会出现该特定错误:

您正在重新定义 new 操作,我假设应该是 Devise::RegistationsController,它具有以下定义:

def new
resource = build_resource({})
respond_with resource
end

它设置一个资源,然后在设计辅助方法 devise_error_messages! 中引用它:

def devise_error_messages!
return "" if resource.errors.empty?
...
end

在默认设计“sign_up”模板中使用,users/registrations/new.html.erb:

...
<%= form_for(resource, :as => resource_name, ...) do |f| %>
<%= devise_error_messages! %>
...

您看到该错误是因为您没有定义 resource

关于ruby-on-rails - Rails 3,设计 : Using different layout for signup, 登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13437664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com