2

我试图在我的应用程序的每个页面上执行一些 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 %>

我必须在我的应用程序控制器中更改什么?

4

1 回答 1

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
于 2013-09-13T14:08:01.220 回答