【问题标题】:Rails - How do I refresh a page without reloading it?Rails - 如何在不重新加载的情况下刷新页面?
【发布时间】:2014-03-09 13:03:10
【问题描述】:

Rails - 如何在不重新加载的情况下刷新页面?

我正在构建一个应用程序,该应用程序具有每次人们访问该页面时都会给出一个随机数(随机记录)的功能,但问题是当用户访问该页面时,会给出一个随机数,但是如果用户刷新页面,数字将再次更改。

即使用户刷新页面或返回该页面,如何保持该随机数,随机数保持不变。

我正在考虑禁用浏览器中的刷新功能,这将阻止用户刷新页面,从而阻止他们更改随机数,但经过研究,禁用刷新功能似乎是个好主意。

还有其他方法可以实现吗?

----更新----

我试过了

#posts_controller.rb    

def new
       @random = cookies[:stuff] ||= Stuff.random
end

并在我看来调用@random.content,因为我只想要Stuff 模型的内容,第一次很好但是当我刷新页面时,它给了我undefined method 'content' for "#<Stuff:0x0000010331ac00>":String 这是怎么回事?

【问题讨论】:

标签: ruby-on-rails cookies random ruby-on-rails-4


【解决方案1】:

您可以在控制器操作中执行此操作:

# ex. app/controllers/index_controller.rb
def index
  session[:random] ||= rand(10000)
end

这将生成一个介于 0 和 10000 之间的随机数并将其保存在用户的 session 中,仅如果之前不存在。这意味着对于每个特定用户直到他关闭他的浏览器,它都是相同的。

如果您想在关闭浏览器后仍然存在,那么您可以改用cookies:

cookies[:random] ||= rand(10000)

您可以用任何您想要的自定义方法替换 rand(10000) 调用。

【讨论】:

  • 感谢回复,不仅是随机数,还有随机的字母和单词,这些随机的东西都是从数据库中随机抽取的(模型叫Randomstuff)。所以session[:random] ||= rand(10000) 可能不起作用,对吧?
  • 逻辑是一样的,你应该把rand(10000)替换成一个可以获取这些随机东西的方法,例如。 random_record() 代替。
  • 哦,我明白了,将:random 替换为模型:randomstuff ?
  • 顺便说一句,我能做到@random = cookies[:randomstuff] ||= randomstuff.random 并在我看来使用@random 来显示随机选择的东西吗?
  • 嗨 Agis,我已经尝试过 @random = cookies[:randomstuff] ||= Stuff.random 并在我看来调用 @random.content 因为我只想要 Stuff 模型的内容,第一次很好但是当我刷新页面时,它给了我undefined method 'content' for "#<Stuff:0x0000010331ac00>":String这是怎么回事?
猜你喜欢
  • 2014-04-12
  • 1970-01-01
  • 2013-08-20
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2020-10-09
相关资源
最近更新 更多