我想将具有多个模型,控制器和视图的现有rails应用程序转换为单页面应用程序(SPA)。如何为每个模型渲染视图而不是作为单独的html页面,而是作为主页面的部分(比如每个部分的div),可以通过垂直滚动来导航到?是否有可能在标准的MVC Rails应用程序中获得相同的用户体验,我的意思是特别是垂直滚动?
答案 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 您的应用程序类似于一页应用程序,只需花费更少的精力和更少的时间。