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

时间:2014-03-25 04:55:52

标签: ruby-on-rails ruby-on-rails-4 single-page-application

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

4 个答案:

答案 0 :(得分:3)

好吧,要将标准rails应用程序转换为单页应用程序(SPA),您需要将其挂钩到MVC前端框架。之前由rails调用呈现的html现在将被提供给前端MVC框架,该框架将通过进行AJAX调用来呈现页面的一部分而不是整个页面。 模型几乎没有任何变化,几乎整个控制器代码也保持不变。 作为前端MVC框架,您可以查看angular.js,它来自google stable of products或backbone.js,我个人认为很棒。事实上,还有很多其他框架,从像ember.js这样的重型和全功能到像handlebar.js这样的最小和必要的框架。 如果你正在寻找教程,tutsplus有一个我知道的关于rails的主干的教程。希望这能让你开始。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

例如,假设您要将用户添加到用户列表中:

  • 当您点击添加按钮时,您会向控制器发送ajax帖子。

  • 此操作使用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

答案 3 :(得分:0)

试试turbolinks gem 您的应用程序类似于一页应用程序,只需花费更少的精力和更少的时间。