對於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