将Rails页面更改为UI.router页面

时间:2018-02-23 03:56:51

标签: ruby-on-rails angularjs angular-ui-router single-page-application

我正在处理的当前项目的一半是用angularjs编写的,而大多数关键部分是用Rails编写的。

是否可以在不重写所有导轨页面的情况下使用角度?

在一天结束时,Rails已经在处理后端的所有业务逻辑。我想要的是使用angular来渲染数据而不重新加载页面以获取Rails渲染的模板的简洁方法。

因此,通过将我的application.html.erb更改为一行代码,可以获得部分页面:

<%= yield %>

现在,如果我重新加载url rails只返回与应该处理请求的控制器相关的特定业务逻辑的页面部分。

不,我需要做的是 - 使用angular来渲染这些页面的页脚和页眉 - 处理页面重新加载逻辑,以便在整页重新加载时,它应该加载单页面应用程序,然后呈现当前视图。

1 个答案:

答案 0 :(得分:1)

基于博客:https://medium.com/@nshnt/migrating-rails-pages-to-angularjs-6c01ced6cb88,这似乎有效

如果request具有partial = true查询参数,则服务器返回不带页眉和页脚的部分。

helper_method  :should_render_partial?, .... 

def should_render_partial?
    params[:partial].eql?("true")
end

在模板中:

<% unless should_render_partial? %>
    <%= render partial: 'layouts/angular_app_template' %>
<% end %>

<% if should_render_partial? %>
    <%= yield %>
<% end %>

在角度中,使用ui.router可以呈现相同的部分:

$stateProvider.state('home', {
  url: '/home',
  templateUrl: function(){
    return "/home?partial=true";
  },
});