namespace 包 devise 表單用法


#1

發現漏網之魚 要再上來詢問看看

namespace 包 devise 用法

  # 用戶用
  namespace :fdb do
  # 用戶管理模組路徑
  devise_scope :fdb_user do
  end
    # controllers相關訊息頁面
    devise_for :users,  :controllers => { 
    :registrations => "fdb/users/registrations",
    :sessions => "fdb/users/sessions" ,
    :passwords => 'fdb/users/passwords' ,
    :confirmations => 'fdb/users/confirmations' ,
    :unlocks => 'fdb/users/unlocks'
  }
end

原生註冊
<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), :action => 'create') do |f| %>
<% end%>

自訂頁註冊
<%= simple_form_for(:users, :url => fdb_user_registration_path(:users), :action => 'create') do |f| %>
<% end %>

可是不知道該怎包 namespace ,註冊都是跳不過 還是說 Controller 有要變更寫法??

一般的表單就是 Controller 
<% @fbqda = Table.new %>

表單
 <%= simple_form_for [:fdb, @fbqda] do |f| %>
<% end %>

即可 不知道該怎處理 namespace 包 devise 用法


#2

devise 的 controller 有自己的繼承樹之類的,所以無法使用一般的方式來完成 … namespace 的重點在於繼承,所這邊就打架了

# fail
#如果這樣寫你的 devise controller 就必須繼承 dashboard_controller
namespace 'dashboard'do 
  devise_for :users
end

#try this (移走一號)
devise_for :users , :controllers => {
  :sessions => "users/sessions"
}
#or this (移走二號)
scope '/users' do
  devise_for :users
end
#or this (官方推薦)
devise_for :users, path: 'admins'

簡單的解釋,因為 devise 的 controller 有自己的繼承的做法,且它並不是繼承 application_controller 而是 mixin 進來的,所以不能用 namespace 的方式來包它(否則它該繼承誰?)所以上面的方式都是把它單純的"移走",但不改變繼承的方式

資料來源

這邊未測就是了,不過大概是這個樣子,devise 裡面還有個設定 config.parent_controller 是可以設定從那個 controller 來做 mixin,預設就是 application_controller ,而我們的 case 有多套 service,所以把 application_controller 的上層抽換成我們自己寫的 abstraction_controller 超帥氣的哈哈,而上面那些也是抽換時才發覺的東西就是了

anyway 你上 namespace 要的目的不就是改網址和改檔案位置?,上面那些應該都能符合你的需求就是了

不過你真的真的要用 namespace 的方式來解的話應該也還是可以,不過寫法要變成上面的那個網址的最後一個回答

class Admin::Admins::SessionsController < ::Devise::SessionsController
  layout "admin/connection"
end
namespace :admin do |admin|
  devise_for :admins, :controllers => { :sessions => "admin/admins/sessions" }
end

這樣也符合階層觀念就是了,不過請記得一樣的,它只有吃到 application_controller 而非吃到 admin/admins_controller (除非你又再自幹 mixin 進來)把繼承樹和階層的觀念串起來應該就能搞懂這東西的鬼邏輯就是了,以上


#3

好的 感謝JC大

想說漏網之魚 但改下去怎怪怪的FU 用法好像打架了

晚上我在嘗試看看 先謝過JC大:grinning: