微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 使用Rails服务器进行AngularJS模板转换的方法

我需要使用AngularJS前端和 Ruby on Rails服务器实现具有多语言支持的应用程序.
我正在寻找一种合理的方法来呈现多种语言的翻译模板.我想出了一个我想要反馈的方法.

在Angular路径定义中,将template属性设置为html partial,其中只有一个ng-include,其中src属性值由控制器设置.需要这种方法来动态修改要从服务器获取的模板的路径;它在这里描述:
AngularJS – How to use $routeParams in generating the templateUrl?

所以Angular路由配置看起来像:

angular.module('myApp',[]).
    config(function ($routeProvider) {
        $routeProvider.when('/sites/new',{
            template: '<div ng-include src="templateUrl"></div>',controller: 'RouteController'
        });
    });

控制器看起来像:

// Set a prefix on the URL path,something like “es”
function RouteController($scope,$routeParams) {
    $scope.templateUrl = $routeParams.locale + "/template/sites/site";
}

这里$routeParams.locale用于设置语言环境,但可以是用户操作设置的变量.动态修改模板URL路径以添加区域设置前缀的方法似乎有点复杂,但我不知道其他方式.

在Rails端,在routes.rb中,添加一个路由:

match '/:locale/template/*template' => 'template#get'

该路由使用路由通配,因此params [:template]值可以是多级路径.
TemplateController #get动作只是渲染由params [:template]确定的部分
模板控制器代码类似于:

class TemplateController < ApplicationController
    layout false
    caches_page :get

    def get
        render(template: "template/#{params[:template]}")
    end
end

Rails I18n支持翻译在erb模板中使用,根据locale参数进行翻译.
在生产中,将启用缓存.这样可以避免产生翻译费用. URL路径的区域设置前缀将导致要缓存的每种语言的已翻译模板集.

方法尽可能地将翻译处理推送到服务器端.

这种方法有什么根本问题吗?

可以做得更好吗?

解决方法

您可能对 angular-translate模块感兴趣.

原文地址:https://www.jb51.cc/ruby/269692.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐