对于js和angular来说我相当新,但是我在Rails + AngularJS(http://railscasts.com/episodes/405-angularjs?autoplay=true)上观看Ryan Bates的railscast之后试图让Rails应用程序工作。使用Rails和AngularJS进行嵌套式表单的困难
我相信我想要做的事情很简单:我有一个Place模型,有很多电话,我想动态地添加和保存电话时创建一个新的地方。这种类型的嵌套表单在Rails中是相当容易的(当用户添加一个Phone时,js只创建一个新的字段元素),但是我想在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>
地方。 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 = {}
in place.js.coffee我可以将位置保存到数据库中(place = Place.save($ scope.newPlace))。我需要地点的ID,以便我可以将其附加到动态构建的所有电话(因为电话具有指向地点的place_id的FK)。但是,如果我在控制台中键入place.id,则会收到未定义的消息。 place.name将返回该地点的名称,但id不起作用。但是,如果我查看console.log位置,则会看到id字段已返回并填充。
2)如何获取地点JSON对象的id字段?我几乎肯定这是可能的,因为Chrome的控制台返回id字段,但place.id不会给我任何东西。
非常感谢您的帮助。我非常感谢。
'location'是使用,可以运行与'window.location'冲突糟糕的变量名。做一个网页搜索javascript保留关键字 – charlietfl 2013-03-09 23:57:47
谢谢你的头。位置实际上不是我正在使用的变量。我只是用它来举例。 – Robert 2013-03-10 00:01:24
也有点令人困惑,因为我相信你使用'Location'作为对象的实际地址字段的引用,而不是浏览器'location'或角度'$ location',它们是'url'相关的。所以不完全确定你指的是 – charlietfl 2013-03-10 00:15:39