Ruby on rails 添加before_helpers和helper_方法来设计控制器
我有一套适用于某些控制器的before_helper和helper_方法,包括所有designe控制器 在筛选之前声明这些内容的首选方法是什么 我尝试了,但没有成功(在定义designe::sessioncontroller(LoadError)时出错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
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
来修复此问题。这样做的好处是,它可以在任何控制器中使用。因为我正在缓存操作,所以想法是在缓存操作之后调用这些方法,在非缓存操作之前调用这些方法。这就是为什么我试图在全球范围内直接避免它。