gpt4 book ai didi

ruby-on-rails - 辅助方法未被识别 - 可能是因为命名空间?

转载 作者:行者123 更新时间:2023-12-04 16:58:59 25 4
gpt4 key购买 nike

所以我有一个 Admin命名空间,和一个 sessions其中的 Controller 。

还有一个admin/sessions_helper.rb当我生成 Controller 时制作的,所以我一直在其中放置一些方法,但是我似乎无法调用它们。这归结为命名空间吗?

错误

undefined local variable or method `sign_out' for #<Admin::SessionsController:0x007fe2b2f55680>

def destroy
sign_out
redirect_to admin_path
end
end

session_controller.rb
class Admin::SessionsController < AdminController

...

def destroy
sign_out
redirect_to admin_path
end
end

admin/sessions_helper.rb
module Admin::SessionsHelper
...

def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
end

请注意,我没有在任何地方包含帮助程序,因为在文档中它说 all helpers are included by default .

最佳答案

助手在 Controller 中不可用。助手被设计为混合到 View 上下文中。

有一些变通方法可以使帮助程序对 View 和 Controller 都可用,但它实际上应该是有意义的。 sign_out您定义的方法在 View 中根本没有意义。

我建议你在 AdminController 中定义它(这看起来是所有管理 Controller 继承的基本 Controller )。

module AdminController
...

private

def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
end

请务必将其标记为私有(private),否则 Rails 可能会将其用作 Controller 操作。

关于ruby-on-rails - 辅助方法未被识别 - 可能是因为命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20638859/

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