【发布时间】:2015-10-10 20:49:05
【问题描述】:
我正在从头开始在 ruby on rails 上构建一个电子商务网站。(这是我在 ruby on rails 上的第一个项目)
我的产品属于一个子类别,而该子类别又属于一个类别。
我的过滤器部分包括多个复选框,用于类别、子类别、附加类别(如手工制作的衣服、工厂建造等)、生活方式(轻松、公司等)和布料_材料类型(这有大约 30 个选项)
我将针对每种情况发送 5 个数组到后端以搜索关联。
现在,当非登录用户重新加载页面时,用户设置的过滤器将重置为默认值。
为了避免这种情况,我有四个选择。
选项 1。将用户设置的过滤器值存储在 cookies 中,速度很快,但可能会降低用户浏览器的速度。
选项 2 。使用 ActiveRecord::SessionStore gem 将值存储在会话中,这会将我的会话大小增加到 65K,但会减慢应用程序的速度。
选项 3 .使用 jquery modify/create document.url 选项,以便每个过滤器选项都附加到 document.url 并在重新加载时我得到设置的参数用户进行过滤。但这看起来实现起来很麻烦。
选项 4。使用 rails 临时数据库 等 gem。
我选择了选项 2 并为此使用会话存储,但我认为将来维护它会变得很麻烦。
只需要一些建议,例如其他 Rails 电子商务网站如何解决这个问题,或者有没有更好的方法来解决这个问题。
【问题讨论】:
-
我会使用 url 参数,因为 restful 设计的原则之一是无论浏览器状态如何,资源都应该看起来相同。因此,如果我正在查看粉色女鞋并复制粘贴浏览器网址并将其发送给朋友,他们应该会看到相同的选择。
-
您当然可以将它与 cookie/访客用户帐户一起使用来记住收藏夹。但是,由于无状态,构建面向 URL 的解决方案通常会更加健壮。
-
感谢您的回复。N 正是我担心的问题..除了这些阵列之外,我还有价格范围和定制针迹选项可用。我正计划为临时数据创建一个搜索模型。这样用户就可以轻松地保存它们,如果他们愿意并分享他们保存的搜索。并将 cronjob 添加到 rake 任务以删除搜索模型和会话模型中的陈旧元组。
标签: ruby-on-rails ruby ruby-on-rails-4 rubygems