gpt4 book ai didi

ruby-on-rails - 为设计的所有 Controller 命名空间

转载 作者:行者123 更新时间:2023-12-04 16:55:01 26 4
gpt4 key购买 nike

我将 Devise 与多个模型(确切地说是三个)一起使用,每个角色都有一些不同的交互。例如,在用户模型注册后,我重写了一个设计方法,将它们重定向到特定的欢迎路径,在雇主模型中,我将它们带到信用卡表单等。

因此,我需要为所有内容命名。为 View 和 Controller 命名空间并不困难,但是,我想知道是否有一种方法可以命名 Controller 而无需指定每个设计 Controller 。

例如,有没有办法基本上做到这一点:

devise_for :employers, :controller => "employers"

而不是必须这样做:
devise_for :employers, :controllers => { 
:registrations => "employers/registrations",
:sessions => "employers/sessions",
:confirmations => "employers/confirmations",
:passwords => "employers/passwords",
:unlocks => "employers/unlocks",
:mailer => "employers/mailer"
}

可能看起来微不足道,但是当您需要维护三个模型时,它可能会变得有点多。

最佳答案

看看以下来自 Devise within namespace 的回答.简单地在 routes.rb 中命名空间不会产生预期的结果。你必须为你想要的每个 Action 生成 Controller 。例如,对于 session ,您必须在 Controller Employer 命名空间中创建一个名为 Sessions 的新 Controller :

bundle exec rails g controller employer/sessions

然后从设计 session Controller 继承新的 session Controller ,以引入正确处理 session 所需的所有设计方法:
class Employer::SessionsController < Devise::SessionsController
end

并将 config/routes.rb 中的 'devise_for :employers, :controller => "employers"' 行更改为以下内容:
devise_for :employers, :controllers => { :sessions => "employer/sessions" }

最后,作为可选步骤,您可以生成 app/views/employer/sessions 目录的 View 。你可以这样做我的设置 "config.scoped_views = true"在 config/initializers/devise.rb 中并运行以下命令以生成适用于雇主的 View :
rails generate devise:views users

这应该在 app/views/employer/sessions/new 生成模板。否则,新的 session Controller 将只使用默认的 View 模板。

希望这可以帮助!

关于ruby-on-rails - 为设计的所有 Controller 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12224292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com