1

angularjs を使い始めたばかりで、レールをバックエンド API として使用しています。レールからデータを取得するために、Angular Rails リソース ( https://github.com/FineLinePrototyping/angularjs-rails-resource ) とラックコアを正常にセットアップしました。ただし、フェスティバルを保存しようとすると、次のエラーが発生します。

XMLHttpRequest cannot load http://localhost:3000/festivals. Origin http://localhost:9000 is not allowed by Access-Control-Allow-Origin. 

ここに私のコードがあります、

app/scripts/directives/festival_form.coffee

'use strict'

angular.module('MFNApp')
  .directive 'festivalForm', ->
    return {
      compile: (scope, element, attributes) ->
        console.log 'compile'

      link: (scope, element, attributes) ->
        console.log 'link'

      controller: ($scope, Festival) ->
        $scope.newFestival = new Festival
        console.log $scope.newFestival

        $scope.save = ->
          $scope.newFestival.save().then(
            (festival) ->
              console.log 'success'
              # $scope.festivalForm.$setPristine()
              # $scope.newFestival.$dirty = false
            ,
            (response) ->
              console.log 'failure'
              # $scope.festivalForm.$setValidity(false)
              # angular.forEach response.data, (value, key) ->
              #   $scope.festivalForm.$error[key] = value[0]
          )

    }

アンギュラ レール リソースを使用したフェスティバル ファクトリは次のとおりです。

app/scripts/services/Festival.coffee

'use strict'

angular.module('MFNApp')
  .factory 'Festival', (railsResourceFactory) ->
    railsResourceFactory
      url: 'http://localhost:3000/festivals', 
      name: 'festival'

で、景色はこちら

app/views/festivals/new.html

<div festival-form>
  <form>
    <fieldset>
      <legend>Festival Information</legend>

      <div class="row">
        <div class="large-12 columns">
          <label>Festival Name</label>
          <input ng-model='newFestival.name' type="text" placeholder="Name of your festival...">
        </div>
      </div>

      <div class="row">
        <div class="large-12 columns">
          <label>Description</label>
          <input ng-model='newFestival.description' type="text" placeholder="About your festival...">
        </div>
      </div>

      <button ng-click='save()'>Save</button>


    </fieldset>
  </form>

</div>
4

2 に答える 2

0

Web API がそのドメインからの要求を受け入れることを許可する必要があります ( http://localhost:9000)。または、ここで説明されているように、すべてのドメインに対して Web API を開くことができますCORS ポリシーを介してすべてを許可する

于 2013-09-25T15:58:08.933 に答える
0

クロス オリジン リクエスト エラーのように見えたので、エラーは少し誤解を招くものでした。実際には、レールコントローラーのエラーでした。したがって、Rails を angular のバックエンドとして接続してこのエラーが発生した場合は、Rails コードが正しくない可能性があります。お役に立てれば!

于 2013-10-06T16:26:36.220 に答える