将 Rails 页更改为 UI.router 页

Changing Rails Pages to UI.router pages

我目前正在进行的项目有一半是用 angularjs 编写的,而大多数关键部分是用 Rails.

编写的

是否可以在不重写所有 rails 页的情况下使用 angular?

归根结底,Rails 已经在后端处理所有业务逻辑。我想要的只是一种使用 angular 呈现该数据而无需重新加载页面以获取由 Rails 呈现的模板的简洁方法。

所以可以通过将我的 application.html.erb 更改为一行代码来获取页面的一部分:

<%= yield %>

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

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

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

如果请求有一个 partial=true 查询参数,服务器 returns 部分,没有页眉和页脚。

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 %>

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

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