我使用路由扩展了默认的Devise RegistrationsController:
# use my own controller for devise registrations
devise_for :users, :controllers => { registrations: 'registrations' }
在这个控制器中,我有一个名为 new_from_invitation 的方法。此方法呈现自定义注册表单,以防用户来自邀请。
我复制了文件devise / registrations / new.html.erb。所以我的自定义注册表单如下所示:
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
这会抛出ArgumentError,因为资源是nil。与资源名称相同。 不知何故,资源和resource_name帮助程序在默认的设计/注册/新方法中可用,但我无法弄清楚如何。因此无法找到让这些帮助程序可用于我的自定义方法的方法。 非常感谢任何帮助!
答案 0 :(得分:4)
将其添加到您的应用程序帮助文件中:
def resource_name
:user
end
def resource
@user ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end