我可以从Rails 3.1中的ApplicationController获取当前控制器对象吗?

时间:2011-10-20 08:15:03

标签: ruby-on-rails ruby-on-rails-3.1

有什么方法可以让控制器处理来自ApplicationController类的请求?

基本上我正在尝试找出一种在不再需要HTTPS时返回HTTP的方法。我已按照说明将Devise配置为使用SSl:

#in config/environments/production.rb
config.to_prepare { Devise::SessionsController.force_ssl }
config.to_prepare { Devise::RegistrationsController.force_ssl }

但是,一旦Devise控制器重定向到SSL,它就会停留在那里。 Devise wiki中有一个代码片段,一旦完成Devise操作,它就会重定向回HTTP。但是,如果用户使用任何其他方式导航,则无效。

从我的.NET思维方式来看,也许我可以在所有控制器的基类中做一些事情,即ApplicationController。如果我可以拥有一个需要SSL的控制器类名称数组,那么如果当前控制器类不需要它,则重定向到HTTP,这可能是现在足够粗糙的解决方案?我是Ruby和Rails的新手,所以我可能不会以正确的方式看待这个......

谢谢, 达尼。

2 个答案:

答案 0 :(得分:2)

您可以在params哈希中查看当前控制器名称:params[:controller]

答案 1 :(得分:0)

您还可以运行controller_name

[3] pry(#<PostsController>)> controller_name
=> "posts"