Rails全局变量未在更新时更新

时间:2016-10-30 14:51:39

标签: ruby-on-rails

我在$template中定义了一个application_controller.rb变量,其中包含一些通过管理员更改的网站模板代码

问题是当我保存或更新它时,它不会影响网站直到服务器重启,这在生产中真的很不舒服

$template = Template.first
.....

$template.header.html_safe

在日志中,我可以使用那个$ template变量make和SQL,并且最开始(在Puma启动之前),这可能是全局变量应该如何工作的方式。

P.S。我使用active_admin并从那里更新

1 个答案:

答案 0 :(得分:1)

这是因为你获取了你的Template并且它在内存中,因此在每个save之后(:create,:update,create!,:update!,:save,:save!)你必须重新加载你的变量

$template.reload

这将更新您的变量

或者您只需将辅助方法添加到ApplicationController

即可
def first_template
  Template.first
end
helper_method :first_template

每次都会检索更新的数据

您可以在视图中使用它

first_template.header.html_safe