我目前正在学习 Ruby。我对 Java EE 有一些了解。 据我所知(据我所知)Ruby on Rails 假设每个请求都会进行全页面刷新(渲染)(如果我们不涉及主干或远程=>true)。
那么问题是我们如何维护用户 session 的状态? (不包括cookie或数据库持久性)
在 Java 中,有一个 backingBean 的概念,它保留(直到 session 存在)应用程序中不同 UI 部分的状态。
例如:假设有一个具有不同 UI 部分的应用程序
- 第一部分包含用户信息(姓名、年龄)。
- 第二部分包含他的 TODO 列表。
- 第三部分包含他的草稿本。
- 第四部分包含一个输入字段。
现在假设用户在输入字段中输入一些文本并按 Enter。 现在 Rail 创建 Controller (A) 的对象 (oA) 并调用该对象 (oA.m) 的特定方法。
从这里,控件转到 View , Controller 对象(oA)可供 View 中的(嵌入)Ruby 代码使用。 现在我们使用这个 oA 对象来填充 View 中的动态数据。 假设此 View 在布局中呈现,其中包含用于呈现应用程序的其他 3 部分的代码。
现在,为了成功运行代码,oA 对象还应该具有布局 View 所需的动态内容。
如果我能够正确解释并且上述案例对您有意义,那么下面是具体问题: 您是否不认为随着应用程序中的部分增加,每个 Controller 都必须为整个应用程序提供数据。 (反对不要重复自己!!)
如果我们有与每个 UI 部分相对应的支持对象,那么我们只能在该特定 View 的 Controller 中工作。
我知道我错过了一些模式或者可能以错误的方式看待事物。 有人可以回答我正在做的/正在思考的/使用错误的方式吗?
最佳答案
页面刷新问题属于浏览器领域,而您的其余问题更倾向于服务器端问题。所以,我尝试解决服务器端的问题。
Ruby-on-Rails 框架设计的背景是:CRUD 改进了数据库中通过网络选择、插入、更新和删除数据的方式。
跨网络意味着您使用 HTTP,并且在服务器端修改数据的主要方法是处理 POST 和 PUT 请求。一旦您想要提供超过 1 个操作/页面,您可能需要使用 Ajax,并且您可能会离开 Rails Way。对于您想要组合待办事项列表、配置文件管理器、便签本...而无需刷新整个页面的用例,您最好研究一下客户端 JavaScript 框架(Angular、Ember、Backbone 是流行的框架)在 Rails 社区中)。
您可能还想做一些背景阅读,了解 Ruby-on-Rails 中的观点的来源,例如Why Rails is different from Java ,你会看到:
- 1/3 的 Ruby-on-Rails 提供了处理 HTTP 的好方法(= 路由和 Controller )
- Rails 的 1/3 提供了与数据库更好的交互 (= ActiveRecord)
- Rails 的 1/3 可以更好地呈现/呈现信息(= ActionView)
关于ruby-on-rails - ruby on Rails 的设计是否考虑到了整页刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16695363/