我想在rails中初始化变量并在控制器的操作中使用它,但是当服务器启动时,变量应该具有固定值。我已经尝试在控制器的操作中定义它,并且它为每个请求获得相同的初始化值。例如,我想初始化date.now并在15天后也有相同的日期。
更新 我正在实施即将到来的页面,其中计时器将在15天后显示。如果我在控制器内的一个动作中实现它,它会在每次调用动作时显示新的日期。
请帮助
答案 0 :(得分:2)
如果要在rails中创建CONSTANT,则只需将其放入initializer
文件即可。例如,在constants.rb
:
initializer
#config/initializers/constants.rb
TEST_VALUE = 10
要从您的控制器访问此CONSTANT,只需致电TEST_VALUE
。例如,
#controllers_path/some_controller.rb
.....
def some_def
@value = TEST_VALUE # this will be enough to fetch the constants.
end
但是,请确保在更改intializer
后重新启动服务器。
答案 1 :(得分:1)
您正在寻找创建constant,这基本上是一个不会改变其价值的变量
您通常会使用initializers设置这些:
#config/initializers/your_initializer.rb
YOUR_CONSTANT = your_date
为了维持一个持久的日期,您必须提供更多关于您使用它的内容。每次加载Rails时都很难创建(如何知道要使用哪个Time.now
),所以给我们提供更多信息将是一个很好的帮助
答案 2 :(得分:0)
您也可以使用相反的方法。假设您应该知道新功能的日期(例如2014-04-04 18:00
),您可以找到目标日期之前的秒数:
@seconds_left = Time.parse('2014-04-04 18:00').to_i - Time.now.to_i
然后将其传递给客户端并实现计时器。因此,您只需要存储目标日期的字符串表示。
这种方法的明显缺点是,每次要引入新功能时都应调整目标时间。