将现有rails应用程序转换为单个页面



我想将现有的rails应用程序与多个模型,控制器和视图转换为单页应用程序(SPA)。如何呈现每个模型的视图,而不是作为单独的html页面,而是作为主页的部分(例如每个部分的div),可以通过垂直滚动导航到?是否有可能获得相同的用户体验,我的意思是垂直滚动,在一个标准的MVC Rails应用程序?

要将一个标准的rails应用程序转换为单页应用程序(SPA),你需要将它与MVC前端框架挂钩。以前由rails调用呈现的html现在将被馈送到前端MVC框架中,该框架将通过AJAX调用呈现页面的一部分,而不是整个页面。模型没有任何变化,几乎整个控制器代码也保持不变。作为一个前端MVC框架,你可以看看来自谷歌稳定产品的angular.js或我个人认为很棒的backbone.js。事实上,还有很多其他框架,从像ember.js这样功能齐全的重型框架到像handlebar.js这样的小型框架如果你正在寻找教程,我知道tutsplus有一个关于骨干的教程。

您必须在要显示的页面中呈现视图,这与模型和控制器代码无关。请参考以下链接http://guides.rubyonrails.org/layouts_and_rendering.html

这是完全可能的,您应该通过javascript而不是html调用您的操作,以便每个操作返回您想要修改的页面的一部分,而不是重新加载整个页面。

示例,假设您要向用户列表中添加一个用户:

  • 当你点击添加按钮时,你会向你的控制器发送一个ajax post。

  • 这个动作用一个javascript文件(controller_action.js.erb)响应js格式

  • 这个js文件将计算与表(_user.html.erb)的一行对应的部分模板,找到您的表并将计算的html附加到表

看一下:

http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

特别是这一节,用例子回答你的问题:

http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html server-side-concerns

试试turbollinks gem您的应用程序将类似于一页应用程序,更少的精力和更少的时间。

最新更新