【问题标题】:saving state with javascript in rails在 Rails 中使用 javascript 保存状态
【发布时间】:2011-05-15 13:19:11
【问题描述】:

所以我在这方面做了几次尝试,但决定我需要社区提供一些关于最佳实践的建议。这就是我想要做的。

我在多个视图中有多个元素,我使用 jquery 切换来显示或隐藏它们。我想要做的是保存它们的状态,以便它们是跨请求的持久性。 (即,如果用户有 panel1 显示,但 panel2 隐藏,当他们刷新时,他们保持原样)

我在想每次用户切换一个元素时,我可以在会话中保存该元素的 css 显示值。然后在每次页面加载后,我可以使用 jquery 的 .class 选择器来获取所有具有“切换”类的元素并将其应用于这些元素。

这个想法似乎很合理,但我不够精明,无法实现它。我不知道如何执行 javascript,并让它解析 ruby​​ 代码,除了让 ajax 为该视图调用 .js.erb。

我已经玩了几个小时,但没有成功。有没有人有任何建议可以让我朝着正确的方向开始?

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax session


    【解决方案1】:

    我认为有两种方法可以继续。

    1)您提到第一个非常临时的:将信息保存到会话或缓存中

    2) 如果您希望它持久化:将当前用户的状态保存在数据库和缓存中以便快速访问。

    它们都需要一些你必须处理的 ajax 请求才能让你的服务器知道发生了什么。

    我会使用一些 jQuery 函数:单击然后切换,这将添加或删除一个“隐藏”类(在你的 CSS 中只是一个“显示:无”)。我会将这些功能保留在客户端(不使用任何 js.erj 或 rjs)。

    除了切换之外,我还会根据用户单击的面板中是否存在“隐藏”类来发送带有布尔值的 ajax 请求。这只会呈现 :text => 'status saved' 或 'status not saved'。

    当页面第一次加载时,只需将 添加到每个面板的类中。

    希望这有帮助,

    【讨论】:

    • 因为我真的不在乎它们是否在会话中持续存在,只是跨多个页面请求,所以我选择了 cookie 解决方案并完全避免了任何 ajax 请求。
    【解决方案2】:

    也许更简单的方法是使用 cookie 来保存切换的状态。这可以使用 jQuery/JavaScript 来完成,并且完全不需要 Rails 担心这个问题。

    【讨论】:

    • 有时你在兔子洞里走得太远以至于忘记了还有其他洞。这是一个更简单的解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-03-30
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多