ruby-on-rails - ruby on Rails 的设计是否考虑到了整页刷新

标签 ruby-on-rails ajax design-patterns crud single-page-application

我目前正在学习 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/

相关文章:

ruby-on-rails - 是否可以再次保存所有文档?

javascript - Phonegap开发者应用程序不发送ajax

c# - 为什么将设计模式分为三部分?

design-patterns - 复合模式让我困惑

java - 单例用于多种用途?

ruby-on-rails - 渲染 :update on Rails 3. 1.0 给我缺少模板更新

ruby-on-rails - Heroku:PG::错误:错误:关系的权限被拒绝

ruby-on-rails - Sass::Engine.render 没有导入蓝图库...为什么?

php - 如何获取 jQuery $.ajax 错误响应文本?

ruby-on-rails - rails in_place_edit : how do I pass an authenticity token?