我试图在Rails应用程序中集成Angular路由。为了防止干扰并防止在应用程序开发过程中路由发生变化时出现问题,我希望防止在when
$routeProvider
属性中对URL进行硬编码。我的角度文件是.js.coffee.erb
脚本,允许咖啡和erb解析。
注意:client_views
只是一个呈现params[:id]
属性的控制器,工作得很好。
示例:
angular.module('Scheduler', ['ngRoute'])
.config(['$routeProvider', '$locationProvider', ($rp, $lp) ->
$rp.when('/', {
templateUrl : '/client_views/index/'
})
.when('/employees/new/', {
templateUrl : '/client_views/employee_new/ '
})
$lp.html5Mode(true)
@
])
理想情况下,我希望有类似的内容:
angular.module('Scheduler', ['ngRoute'])
.config(['$routeProvider', '$locationProvider', ($rp, $lp) ->
$rp.when('/', {
templateUrl : '<%= some_rails_url_fn :controller => "client_views", :action => "index" %>'
})
.when('/employees/new/', {
templateUrl : '<%= some_rails_url_fn :controller => "employee", :action => "new" %>'
})
$lp.html5Mode(true)
@
])
我看到了url_for
方法,但它显然已被弃用(我使用的是Rails 4),并且它引发了一个未定义的方法错误。
此外,这是在Rails应用程序中使用Angular路由的正确方法吗? routes.rb中:
Scheduler::Application.routes.draw do
root :to => "home#index"
# Routes to current page
match '/', :to => 'home#index', via: [:get]
end
我感觉重定向到#home; home #index&#34;会在某个时候破裂......
答案 0 :(得分:0)
url_for
未被弃用,在预编译资产的上下文中无法作为帮助程序访问。您可以通过专门引用它们来访问URL帮助程序。
<% url = Scheduler::Application.routes.url_helpers %>
angular.module("Scheduler", ["ngRoute"]).config [ "$routeProvider", "$locationProvider", ($rp, $lp) ->
$rp.when "/",
templateUrl : "<%= url.url_for controller: :client_views, action: :index %>"
.when "/employees/new/",
templateUrl : "<%= url.url_for controller: :employee, action: :new %>"
$lp.html5Mode(true)
this
]