注册在Devise中的两个视图 - Ruby on Rails

时间:2016-07-05 05:37:38

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 devise

我处于一种令人困惑的境地。我在我的应用程序中使用Devise进行身份验证。我希望我的注册流程有两种不同的观点。在我的观点中,我将它们都放在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

但从未奏效 任何帮助都将大大鼓励。感谢

2 个答案:

答案 0 :(得分:1)

我认为当我想将设计注册放到其他视图时我们遇到了同样的问题而且我遇到了同样的问题。 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

我希望它可以帮助您解决问题。

答案 1 :(得分:0)

您需要使用您的业务方法覆盖您的设计/注册控制器,并为相同的

定义路由

您可以使用以下链接作为参考

https://gist.github.com/kinopyo/2343176