我对js和angular还是比较陌生,但是在观看Ryan Bates在Rails + AngularJS(http://railscasts.com/episodes/405-angularjs?autoplay=true)上的railscast之后,我试图使Rails应用程序正常工作。
我相信我想做的事情很简单:我有一个包含很多电话的Place模型,并且我希望在创建新的Place时能够动态地添加和保存电话。仅在Rails中,这种类型的嵌套形式就相当容易(js仅在用户添加Phone时创建一个新的field元素),但是我想在Angular中做到这一点。
我想我的问题然后分为两个部分:
1)在Rails + AngularJS(甚至一般的表单)中创建嵌套表单的最佳实践是什么?现在我通过JSON将每个模型传递给Angular,但这是最好的方法吗?
我的第二个问题涉及以下代码。
我已经尝试执行此操作,并且可以保存一个角度的地方:
places_controller.rb
respond_to :json
def create
respond_with Place.create(params[:place])
end
_form.html.erb
<div class="container-fluid" ng-controller="PlaceCtrl">
<form ng-submit="addPlace()">
<div class="row-fluid">
<div class="span2"><label>Name</label></div>
<div class="span8"><input type="text" class="input-xlarge" ng-model="newPlace.name"></div>
</div>
<input type="submit" class="btn" value="Add">
</form>
</div>
place.js.coffee
app = angular.module("test", ["ngResource"])
app.factory "Place", ($resource) ->
$resource("/places/:id", {id: "@id"}, {update: {method: "PUT"}})
app.factory "Phone", ($resource) ->
$resource("/phones/:id", {id: "@id"}, {update: {method: "PUT"}})
@PlaceCtrl = ($scope, Place, Phone) ->
$scope.addPlace = ->
place = Place.save($scope.newPlace)
console.log place
$scope.newPlace = {}
在place.js.coffee中,我可以将该行保存到行中的Place到DB中(place = Place.save($ scope.newPlace))。我想要place的ID,因此可以将其附加到所有动态构建的Phone(因为Phone的FK的place_id指向一个Place)。但是,如果我在控制台中键入place.id,则会收到未定义的消息。 place.name将返回该地点的名称,但id无效。但是,如果我查看console.log的地方,则会看到返回并填充了id字段。
2)如何获取场所JSON对象的id字段?我几乎肯定这是可能的,因为Chrome的控制台返回了id字段,但是place.id不会给我任何东西。
预先感谢您的帮助。我非常感谢。
最佳答案
我会尝试这样的事情:
$scope.addPlace = ->
place = Place.save($scope.newPlace) ->
$scope.newPlaceId = place.id
console.log place
$scope.newPlace = {}
关于ruby-on-rails - 使用Rails和AngularJS的嵌套表单问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15317263/