2

他のルートに行かずにインデックスページに作成レコードを生成したい。編集部分は正常に動作します。レコードの追加をクリックすると、500 エラーが発生します。それは言う

undefined method `income_url' for #<Api::IncomesController:0x007fcf1f6407f8>

インデックスページのビューでレンダリングする私の create.handlebars は

<div class="control-group">
  <label class="control-label">Income name</label>
  <div class="controls">
    {{view Ember.TextField valueBinding="newIncomeName"}}
  </div>
</div>

<div class="control-group">
  <div class="controls">
    <input type="submit" value="Add" {{action submit content}}>
  </div>
</div>

私の route.js.coffee は次のとおりです。

EmberMoney.Router.reopen
  location: 'history'

EmberMoney.Router.map ->
  @resource 'incomes', ->
    @route 'index' # this route is used for creating new records

EmberMoney.IncomesRoute = Ember.Route.extend
  model: ->
    EmberMoney.Income.find()

EmberMoney.IncomesEditRoute = Ember.Route.extend
  setupController: (controller, model) ->
    if model.get('transaction') == @get('store').get('defaultTransaction')
      transaction = @get('store').transaction()
      transaction.add model
    controller.set('content', model)

  deactivate: ->
    @modelFor('incomes.edit').get('transaction').rollback()

  events:
    submit: (record) ->
      record.one 'didUpdateRecord', =>
        @transitionTo 'index'
      record.get('transaction').commit()

EmberMoney.IncomesIndexRoute = Ember.Route.extend
  model: ->
    EmberMoney.Income.createRecord()
  setupController: (controller, model) ->
    controller.set('content', model)

  events:
    submit: (record) ->
      record.on "didCreate", =>
        @transitionTo 'index'
      record.get('transaction').commit()

私の api/incomes_controller.rb は次のとおりです。

class Api::IncomesController < ApplicationController
    respond_to :json

    def index
      respond_with Income.all
    end

    def show
      respond_with Income.find(params[:id])
    end

    def create
      respond_with Income.create(params[:income])
    end

    def update
      respond_with Income.update(params[:id], params[:income])
    end

    def destroy
      respond_with Income.destroy(params[:id])
    end
end

助けてくれてどうもありがとう。

4

1 に答える 1

0

この場合、レスポンダーの名前空間を指定する必要があります。試してください: http://api.rubyonrails.org/classes/ActionDispatch/Routing/PolymorphicRoutes.html

class Api::IncomesController < ApplicationController
    respond_to :json

    def index
      respond_with :api, Income.all
    end

    def show
      respond_with :api, Income.find(params[:id])
    end

    def create
      respond_with :api, Income.create(params[:income])
    end

    def update
      respond_with :api, Income.update(params[:id], params[:income])
    end

    def destroy
      respond_with :api, Income.destroy(params[:id])
    end
end
于 2013-04-06T16:24:34.233 に答える