我尝试在我的应用程序的每个页面上执行一些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 %>
我的应用程序控制器需要更改什么?
答案 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