ApplicationController如何在每个页面上执行代码

时间:2013-09-13 14:05:15

标签: ruby-on-rails ruby-on-rails-3

我尝试在我的应用程序的每个页面上执行一些ruby代码!我将孔代码插入我的应用程序控制器:

 class ApplicationController < ActionController::Base
 protect_from_forgery

 if Setting.exists?(1) 
 @setting = Setting.find(1) 
 else 
 redirect_to new_setting_path
 end 

 end

这不知道怎么办?奇怪的是,当我将孔代码放入我的应用程序html时,它可以工作:

<body>
<% if Setting.exists?(1) 
@setting = Setting.find(1) 
else 
redirect_to new_setting_path
end %>

我的应用程序控制器需要更改什么?

1 个答案:

答案 0 :(得分:4)

ApplicationController是正确的位置,但您应该将代码放在before_filter中:

 class ApplicationController < ActionController::Base
   protect_from_forgery

   before_filter :ensure_setting

   private

   def ensure_setting
    @setting = Setting.where( id: 1 ).first or redirect_to( new_setting_path )
   end
 end