我很困惑。我在我的应用程序中使用设计进行身份验证。我想要两个不同的观点为我的注册过程。在我看来,我把它们都放在devise/Registration
文件夹
1-business.html.erb
2-new.html.erb
但是我没有办法访问"业务"文件视图。我只有一个模型User
,由于user table
中的标志,我需要这两个视图。我也不能根据他们的falgs
像current_user.myflag
重定向,因为我需要在注册之前就这样做。我也检查了一些链接,但它们与我的选项不同-
更新:我试过像下面这样重写设计注册控制器,但这也没有帮助我。
class Users::RegistrationsController < Devise::RegistrationsController
def business
end
end
由于业务方法是空的-它没有给设计者关于资源名称和类型等的好主意。我也试过
def business
resource = User.new
end
但从来没有成功过任何帮助都将不胜感激。由于
我相信我们有同样的问题,当我想把设计注册到其他视图,我得到了同样的问题。undefined resources or nil
要解决这个问题,你需要以某种方式initialize the resource
。一种方法是在helpers/application_helpers:
中初始化资源,以便您可以将其调用到任何视图。注:resource here is user
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
在重写控制器
class CustomSessionController < Devise::RegistrationsController
include ApplicationHelper
def business
end
end
在Route.rb devise_for :users, :controllers => { :registrations => "custom_session" }
devise_scope :user do
get "/business-signup" =>"custom_session#business"
end
我希望它能帮助你解决你的问题
你需要用你的业务方法覆盖你的设计/注册控制器,并为相同的
定义路由你可以使用下面的链接作为参考
https://gist.github.com/kinopyo/2343176