Tôi đã làm việc để triển khai AngularJS vào ứng dụng Rails của tôi dựa trên Railscast làm điểm khởi đầu. Câu hỏi của tôi là tương tự như câu hỏi này: Angular JS ngResource with nested resources, tuy nhiên tôi đã không tìm thấy một giải pháp cho vấn đề của tôi.Sử dụng AngularJS để truy xuất tài nguyên lồng nhau trong Rails
Hiện tại tôi có tài nguyên lồng nhau mà tôi đang hiển thị trên chế độ xem của tài nguyên chính, qua một phần. Tôi cần phải cung cấp các PROJECT_ID trong truy vấn để lấy các nhiệm vụ, vì vậy tôi có:
app.factory "Task", ["$resource", ($resource) ->
$resource("/projects/:project_id/tasks/:id", {project_id: "@project_id", id: "@id"}, {update: {method: "PUT"}})
]
@TaskCtrl = ["$scope", "Task", ($scope, Task) ->
$scope.tasks = Task.query({project_id: "@project_id", id: "@id"})
Câu hỏi của tôi là, làm thế nào để tôi đặt '@project_id' trong giao diện để vào dòng cuối cùng trong tôi ví dụ giá trị có thể truy cập trong bộ điều khiển? Tôi đã thử sử dụng ng-init:
<div ng-controller="TaskCtrl" ng-init="project_id = <%= @project.id %>">
Tuy nhiên, một lần trong bộ điều khiển TaskCtrl 'project_id' trống và '$ scope.project_id' không hoạt động. Bất kỳ trợ giúp được đánh giá cao.
Cảm ơn đã phản ứng, Oliver. Câu hỏi: Nếu ng-init đang được AccessID Controller truy cập, tại sao tôi không thể di chuyển span project_id sang Task Controller? Cấp tôi mới vào angularjs, nhưng nó có vẻ như nếu giá trị được bao gồm trong Controller họ nên có thể truy cập từ phạm vi. – Drew
Chắc chắn, bạn có thể làm điều đó, nhưng bạn vẫn phải $ xem project_id, vì nó không có giá trị trên bộ điều khiển init. Nhưng nếu bạn cần project_id trong bộ điều khiển khác, anh chị em cho TaskCtrl, nó sẽ không thấy project_id, chỉ có trẻ em sẽ. Đó là nơi dịch vụ xuất hiện. – Oliver
Cảm ơn tất cả sự giúp đỡ của bạn nhưng điều này đã không được khá làm việc cho tôi ... Tôi đã sử dụng đá quý gon để vượt qua trong giá trị. Có vẻ như việc mua các giá trị trường bình thường từ khung nhìn sẽ dễ dàng hơn một chút trong AngularJS. – Drew