gpt4 book ai didi

ruby - 覆盖 session Controller 防止使用自定义 View

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:59 26 4
gpt4 key购买 nike

在我告诉它使用自定义 Controller 之前,Devise (2.1) 一直在使用我的自定义 View 。现在它忽略了我的自定义 View 。

之前一切正常:

告诉 Devise 在 /config/devise.rb 中使用自定义 View

# ==> Scopes configuration
# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "users/sessions/new". It's turned off by default because it's slower if you
# are using only default views.
config.scoped_views = true

添加自定义 View :/app/views/subscribers/session/new.html.erb

/config/routes.rb中设置路由

devise_for :subscribers

然后我添加了一个自定义的 SubscriberSessionsController 作为 /app/controllers/subscriber_session_controller.rb

class SubscriberSessionsController < Devise::SessionsController

before_filter :isInIframe

private

def isInIframe
@hide_navbar = session[:in_iframe]
end

end

并修改/config/routes.rb 以告诉 Devise 使用这个新 Controller 而不是默认 Controller :

devise_for :subscribers, :controllers => { 
:sessions => "subscriber_sessions"
}

一旦我重新启动我的服务器,Devise 现在会使用这个 Controller 但会忽略我的自定义 View 。

最佳答案

通常情况下,发布问题十分钟后我就破解了它。

Devise 找不到 View 的原因是它在不同的文件夹中寻找它。我的替换 Controller 名为 subscriber_sessions.rb,所以 devise 不再在 views/中查找subscribers/sessionsviews/subscribers/subscriber_sessions

我用以下方法解决了这个问题:

将我的订阅者路由更改为:

  devise_for :subscribers, :controllers => { 
:sessions => "subscribers/sessions"
}

将我的 subscriber_sessions Controller 重命名为 session 并将其移至 subscribers 文件夹中,因此其新名称和位置为:app/controllers/subscribers/sessions_controller.rb

我还必须向类添加命名空间,这样新的 session_controller.rb 文件看起来像这样"

class Subscribers::SessionsController < Devise::SessionsController

before_filter :isInIframe

private

def isInIframe
@hide_navbar = session[:in_iframe]
end

end

关于ruby - 覆盖 session Controller 防止使用自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12069679/

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