我对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/

10-13 04:49