Ruby on rails 添加before_helpers和helper_方法来设计控制器

Ruby on rails 添加before_helpers和helper_方法来设计控制器,ruby-on-rails,devise,Ruby On Rails,Devise,我有一套适用于某些控制器的before_helper和helper_方法,包括所有designe控制器 在筛选之前声明这些内容的首选方法是什么 我尝试了,但没有成功(在定义designe::sessioncontroller(LoadError)时出错sessions\u controller.rb)。如果我重新做了所有的控制器,我需要从gem复制相同的代码,这看起来是重复的 你知道我该怎么做吗?把你的放在你的应用程序\u controller.rb的过滤器之前,检查参数[:controller

我有一套适用于某些控制器的before_helper和helper_方法,包括所有designe控制器

在筛选之前声明这些内容的首选方法是什么

我尝试了,但没有成功(在定义designe::sessioncontroller(LoadError)时出错
sessions\u controller.rb)。如果我重新做了所有的控制器,我需要从gem复制相同的代码,这看起来是重复的


你知道我该怎么做吗?

把你的
放在你的
应用程序\u controller.rb的过滤器之前,检查
参数[:controller]
是否是设备控制器的名称:

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
    before_filter :check_if_devise

    private

    def check_if_devise
        if ['confirmations', 'omniauth_callbacks', 'passwords', 'registrations', 'sessions', 'unlocks'].include? params[:controller]
            # logic for before_filter
        end
    end
end
将其放置在
应用程序\u控制器中。rb
将确保为设备控制器运行
之前的过滤器。对于其他单独的一次性控制器,您可以在过滤器之前调用
函数来运行

# app/controller/random_controller.rb
class RandomController < ApplicationController
    before_filter :function_to_run

end
#app/controller/random_controller.rb
类RandomController<应用程序控制器
过滤器前:函数运行
结束

将您的
放在
应用程序\u控制器.rb中的\u过滤器之前
,并检查
参数[:控制器]
是否是设备控制器的名称:

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
    before_filter :check_if_devise

    private

    def check_if_devise
        if ['confirmations', 'omniauth_callbacks', 'passwords', 'registrations', 'sessions', 'unlocks'].include? params[:controller]
            # logic for before_filter
        end
    end
end
将其放置在
应用程序\u控制器中。rb
将确保为设备控制器运行
之前的过滤器。对于其他单独的一次性控制器,您可以在过滤器之前调用
函数来运行

# app/controller/random_controller.rb
class RandomController < ApplicationController
    before_filter :function_to_run

end
#app/controller/random_controller.rb
类RandomController<应用程序控制器
过滤器前:函数运行
结束

before_filter逻辑已经定义为单独的,并且在其他控制器之间共享,因此在“before_filter逻辑”上添加逻辑似乎是重复的。有没有办法将before过滤器分开?与其在
check\u if\u designe
条件中定义逻辑,不如定义一个包含该逻辑的函数,然后根据需要调用它。查看我的更新。这似乎不起作用。当访问Desive登录页面时,我得到
未定义的局部变量或方法“current_site”
。当前站点是在
检查\u是否设计
方法中调用的
helper\u方法。您可以通过定义
当前站点
内部
应用程序\u控制器.rb
来修复此问题。这样做的好处是,它可以在任何控制器中使用。因为我正在缓存操作,所以想法是在缓存操作之后调用这些方法,在非缓存操作之前调用这些方法。这就是为什么我试图在全局范围内直接避免它。before_filter逻辑已经定义为分离的,并且在其他控制器之间共享,因此在“logic for before_filter”上添加逻辑似乎是重复的。有没有办法将before过滤器分开?与其在
check\u if\u designe
条件中定义逻辑,不如定义一个包含该逻辑的函数,然后根据需要调用它。查看我的更新。这似乎不起作用。当访问Desive登录页面时,我得到
未定义的局部变量或方法“current_site”
。当前站点是在
检查\u是否设计
方法中调用的
helper\u方法。您可以通过定义
当前站点
内部
应用程序\u控制器.rb
来修复此问题。这样做的好处是,它可以在任何控制器中使用。因为我正在缓存操作,所以想法是在缓存操作之后调用这些方法,在非缓存操作之前调用这些方法。这就是为什么我试图在全球范围内直接避免它。