我想为注册和登录页面呈现不同的布局。
There's s similar thread that deals with this problem, but it's not exactly the same.
我需要能够仅针对注册和登录页面呈现不同的布局,而不是控制器中的所有其他操作。
<{1>} 下的
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`
答案 0 :(得分:3)
首先,您的意思是继承Devise::RegistrationsController
而不是Devise::SessionsController
吗?
覆盖设计控制器动作似乎有点毛茸茸。您可以通过覆盖RegistrationsController
使用的默认布局来避免这种情况:
class Users::RegistrationsController < Devise::RegistrationsController
layout "auth"
end
至于你为什么会遇到这个特定的错误:
您正在重新定义new
行动,我假设应该是Devise::RegistationsController
,其定义如下:
def new
resource = build_resource({})
respond_with resource
end
设置resource
,然后在设计辅助方法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
。