设计时考虑到整页刷新的轨道上的红宝石

时间:2013-05-22 15:07:01

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

我目前正在学习Ruby。我对Java EE有一些了解。  据我所知(据我所知)Ruby on Rails假设每个请求都会进行整页刷新(渲染)(如果我们不涉及backbone或remote => true)。

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

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

对于Eg:假设有一个具有不同UI部分的应用程序

  • 第一部分包含用户信息(姓名,年龄)。
  • 第二部分包含他的TODO列表。
  • 第三部分包含他的暂存器。
  • Forth部分包含一个输入字段。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

询问页面刷新是在浏览器领域,而你的问题的其余部分更倾向于服务器端问题。所以,我尝试解决服务器端问题。

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

通过网络意味着您使用HTTP,并且在服务器端修改数据的主要方法是处理POST和PUT请求。一旦你想提供超过1个动作/页面,你可能需要使用Ajax,你可能会离开Rails Way。对于想要组合Todo List,Profile Manager,Scratchpad,...而没有完整页面rrefresh的用例,您最好去研究客户端JavaScript框架(Angular,Ember,Backbone是受欢迎的框架)在Rails社区中。)

你也可能想做一些背景阅读,其中Ruby-on-Rails中的意见来自,例如: Why Rails is different from Java,你会看到:

  • 1/3的Ruby-on-Rails提供了处理HTTP(=路由和控制器)的好方法
  • 1/3的Rails提供了与数据库(= ActiveRecord)
  • 的更好交互
  • 1/3的Rails是更好的呈现/呈现信息(= ActionViews)