0

私は持っています...

ルート.rb

  resources :standards do
     collection do
        get :none
     end
  end

私は次のようになりますrake routes

none_standards GET    /standards/none(.:format)                  standards#none

私は私の中に次のものを持っていますstandards_controller.rb

def none
end

では、なぜ/ standard / noneで「IDなしでStandardが見つかりませんでした」というエラーが発生するのですか?

better_errors、それは言う:

(gem) activerecord-3.2.11/lib/active_record/relation/finder_methods.rb
  305 
  306       ids = ids.flatten.compact.uniq
  307 
  308       case ids.size
  309       when 0
  310         raise RecordNotFound, "Couldn't find #{@klass.name} without an ID"
  311       when 1
  312         result = find_one(ids.first)
  313         expects_array ? [ result ] : result
  314       else
  315         find_some(ids)

...

Instance Variables

@table  
#<Arel::Table:0x007fc321207650 @name="standards", @engine=Standard(id: integer, name: string, description: string, created_at: datetime, updated_at: datetime), @columns=nil, @aliases=[], @table_alias=nil, @primary_key=nil>
@klass  
Standard(id: integer, name: string, description: string, created_at: datetime, updated_at: datetime)

これはメンバールートではなく収集ルートであるため、これは非常に奇妙に思えます。

4

2 に答える 2

1

問題はにありましたdeclarative_authorizationfilter_resource_accessで(通常のルートを想定)をfilter_access_to :all(すべてのルートをカバーする)に変更する必要がありましたstandards_controller.rb

于 2013-02-15T05:18:37.663 に答える
0

奇妙な!、私にとっては、次の設定で動作します(ルートの内容を確認してください)

#app/controllers/standards_controller.rb
class StandardsController < ApplicationController
   def none

   end 
end

#config/routes.rb
resources :standards do
  collection  do
    get :none
  end
end

私のルートは

none_standards GET    /standards/none(.:format)     standards#none
     standards GET    /standards(.:format)          standards#index
               POST   /standards(.:format)          standards#create
  new_standard GET    /standards/new(.:format)      standards#new
 edit_standard GET    /standards/:id/edit(.:format) standards#edit
      standard GET    /standards/:id(.:format)      standards#show
               PUT    /standards/:id(.:format)      standards#update
               DELETE /standards/:id(.:format)      standards#destroy
          root        / 
于 2013-02-15T04:40:04.393 に答える