ruby-on-rails – 如何在Rails / Angularjs html5模式中删除重定
发布时间:2020-12-17 02:40:34 所属栏目:百科 来源:网络整理
导读:在使用带有rails的html 5模式时,如何在每次用户刷新 angularjs页面时避免性能下降?我正在使用 Angularjs html5模式 Ruby on Rails路由重定向.通过我的设置,如果我访问http:// localhost:3000 / users,则url立即变为http:// localhost:3000 /?goto = us
在使用带有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路由器的重定向.只需为您的网页制作普通路线即可. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |