两个sign_in形式在rails设备中的每个URL上

时间:2013-10-06 21:58:03

标签: ruby-on-rails ruby devise

可以在DEVISE中自己的网址上创建2个登录视图/ 2个表单吗? 我需要一个用于Web管理员(后台管理)和一个用户(应用程序),一个模型(带角色)

  1. 网络管理/ admin.domain.tld / login
  2. 用户应用程序/ app.domain.tld / login
  3. (登录不成功后,必须留在admin.domain.tld / login上的某个网址管理员 ,以及app.domain.tld / login上的用户)

    这可能吗?怎么做?

1 个答案:

答案 0 :(得分:-1)

我拥有它

控制器/管理/ sessions_controller.rb

class Admin::SessionsController < Devise::SessionsController
end

控制器/应用/ sessions_controller.rb

class App::SessionsController < Devise::SessionsController
end

视图/管理/会话/ new.html.erb

<%= simple_form_for(resource, :as => resource_name, url: admin_login_path) do |f| %>
    <div class="form-inputs">
      <%= f.input :email, :required => false, :autofocus => true %>
      <%= f.input :password, :required => false %>
    </div>

    <div class="form-actions">
      <%= f.button :submit, "Sign in" %>
    </div>
<% end %>

浏览量/应用/会话/ new.html.erb

<%= simple_form_for(resource, :as => resource_name, url: app_login_path) do |f| %>
    <div class="form-inputs">
      <%= f.input :email, :required => false, :autofocus => true %>
      <%= f.input :password, :required => false %>
    </div>

    <div class="form-actions">
      <%= f.button :submit, "Sign in" %>
    </div>
<% end %>

配置/ routes.rb中

  namespace :app do
    devise_for :users

    devise_scope :app_user do
      get 'login' => 'sessions#new'
      post 'login' => 'sessions#create'
    end
  end

  namespace :admin do
    devise_for :users

    devise_scope :admin_user do
      get 'login' => 'sessions#new'
      post 'login' => 'sessions#create'
    end
  end

一切正常,也可以添加:constraints => {:host => "domain"}并编辑路线到所需的网址