在使用带有rails的html 5模式时,如何在每次用户刷新
angularjs页面时避免性能下降?我正在使用
Angularjs html5模式
Ruby on Rails路由重定向.通过我的设置,如果我访问http:// localhost:3000 / users,则url立即变为http:// localhost:3000 /?goto = users,然后重定向到http:// localhost:3000 / users.使用html5模式时,我该怎么做才能避免这种性质的重定向?
Rails路由
myApp::Application.routes.draw do namespace :api,defaults: {format: :json} do namespace :v1 do resources :users end end # Re-route all angular requests to the angular router get "/*path" => redirect("/?goto=%{path}") root to: 'application#home'
结束
角度路线
myApp.config(function($routeProvider,$locationProvider,$httpProvider) { $httpProvider.defaults.headers.common['X-CSRF-Token'] = $('Meta[name=csrf-token]').attr('content'); $routeProvider. when('/',{ templateUrl: '../assets/mainIndex.html',controller: 'MainController',redirectTo: function(current,path,search){ if(search.goto){ // if we were passed in a search param,and it has a path // to redirect to,then redirect to that path return "/" + search.goto; } else{ // else just redirect back to this location // angular is smart enough to only do this once. return "/"; } } }).when('/users',{ templateUrl: '../assets/users/userIndex.html',controller: 'UsersController' }).otherwise({ redirectTo:'/' }); $locationProvider.html5Mode(true); });
以上内容来自这篇博客:http://omarriott.com/aux/angularjs-html5-routing-rails/
解决方法
只需使用此rails路线:
# Route all valid requests to AngularJS root to: 'application#home' get "*path" => "application#home"
和rails action_controller:
# We'll just use this as a launch point for our App def home # Render just the layout since this application is Angular driven # our layout/application has all the angular logic and our controllers # have no views for themselves. We just need a place to launch from # and this happens to be it. So we have no view (thus :nothing => true) # but we still want the layout (since it has the App bootstrap code) render :layout => 'application',:nothing => true end
现在不需要处理angularjs路由器的重定向.只需为您的网页制作普通路线即可.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。