2

我目前正在学习 Ruby。我对 Java EE 有一定的了解。据我所知(据我所知),Ruby on Rails 假设每次请求都会完成整页刷新(渲染)(如果我们不涉及骨干网或远程=>true)。

所以问题是我们如何维护用户会话的状态?(不包括 cookie 或数据库持久性)

在 Java 中有一个 backingBean 的概念,它保存(直到会话存在)应用程序中不同 UI 部分的状态。

例如:假设有一个具有不同 UI 部分的应用程序

  • 第一部分包含用户信息(姓名,年龄)。
  • 第二部分包含他的 TODO 列表。
  • 第三部分包含他的便签本。
  • 第四部分包含一个输入字段。

现在假设用户在输入字段中输入一些文本并按 Enter。现在 Rail 创建控制器 (A) 的对象 (oA) 并调用该对象 (oA.m) 的特定方法。

从这里控件转到视图中的(嵌入式)ruby 代码可用的控制器对象(oA)。现在我们使用这个 oA 对象来填充视图中的动态数据。假设这个视图在一个布局中呈现,其中包含用于呈现应用程序其他 3 部分的代码。

现在,为了成功运行代码,oA 对象还应该具有布局视图所需的动态内容。

如果我能够正确解释并且上述案例对您有意义,那么下面是具体问题:您不认为随着应用程序部分的增加,每个控制器都必须为完整的应用程序提供数据。(反对不要重复自己!!)

如果我们有对应于每个 UI 部分的支持对象,那么我们将只在该特定视图的控制器中工作。

我知道我错过了一些模式,或者可能看错了。任何人都可以回答我在做什么/想/使用错误的方式。

4

1 回答 1

2

询问页面刷新是在浏览器的范围内,而您的其余问题更倾向于服务器端问题。因此,我尝试解决服务器端问题。

Ruby-on-Rails 框架设计的背景是:CRUD,它改进了在数据库中跨网络选择、插入、更新和删除数据的方式。

跨网络意味着您使用 HTTP,而在服务器端修改数据的主要方法是处理 POST 和 PUT 请求。一旦您想提供超过 1 个操作/页面,您可能需要使用 Ajax,并且您可能会离开 Rails 方式。对于您想要组合待办事项列表、配置文件管理器、便笺簿等的用例......没有完整的页面刷新,您最好查看客户端 JavaScript 框架(Angular、Ember、Backbone 是流行的框架)在 Rails 社区中)。

您可能还想阅读 Ruby-on-Rails 中的观点来自哪里的背景知识,例如,为什么 Rails 与 Java 不同,您会看到:

  • 1/3 的 Ruby-on-Rails 提供了处理 HTTP 的好方法(= 路由和控制器)
  • 1/3 的 Rails 提供了与数据库更好的交互(= ActiveRecord)
  • Rails 的 1/3 更好地呈现/呈现信息(= ActionViews)
于 2013-05-26T10:45:55.500 回答