将此行添加到devise / registrations / new.html.haml文件(视图)后:
%div
= f.label :account_type
%br/
= f.select(:account_type, [["Usertype1","usertype1"],["Usertype2","usertype2"]], {:selected => nil, :prompt => 'Pick One'})
点击确认电子邮件中的确认链接后,我收到以下错误:
ActionController::ActionControllerError in Devise::ConfirmationsController#show
Cannot redirect to nil!
只有在注册时选择Usertype2才会发生。我还将account_type设为attr_accessible。 account_type似乎已分配(我在rails控制台中检查过),开发日志没有任何进一步的信息。
我认为这是发生错误的设计确认控制器中的一行:
respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
此外,帐户正在确认,但在尝试登录时,我会收到以下信息:
undefined method `user_url' for #<Devise::SessionsController:0x9d1659c>
位于设计会话控制器的创建操作中。
任何帮助将不胜感激。谢谢!
约翰
答案 0 :(得分:5)
您提到的两个错误是同一个,基本上当您成功登录时,Devise无法检测到您重定向的位置。当您有多个模型或尝试在路径文件中设置自定义重定向(登录后)时,通常会发生此问题。
尝试在ApplicationController中定义路径。
设计文档说post_sign_in_path_for方法采用实际的模型对象(即:正在登录的模型)
def after_sign_in_path_for(resource)
signed_in_path_for_user
end
注意:您可以对多个Devise路径/变量执行相同操作(覆盖它们)。另外,有关在同一个应用程序中为多个Devise模型执行此操作的更多信息,您可以查看this question并回答它。