0

routes.rbファイルに次のネストされたリソースがあります

  resource :issuer do
    resources :certificates
  end

私のモデル:

class Issuer < ActiveRecord::Base
  has_many :certificates
end

class Certificate < ActiveRecord::Base
  belongs_to :issuer
end

にアクセスすると、次のエラーが表示されます。 /issuer/2/certificates

No route matches {:action=>"edit", :controller=>"certificates"}

どんな助けでも大歓迎です..事前に感謝します!

編集:私rake routes

    issuer_certificates GET    /issuer/:issuer_id/certificates(.:format)          {:action=>"index", :controller=>"certificates"}
                        POST   /issuer/:issuer_id/certificates(.:format)          {:action=>"create", :controller=>"certificates"}
 new_issuer_certificate GET    /issuer/:issuer_id/certificates/new(.:format)      {:action=>"new", :controller=>"certificates"}
edit_issuer_certificate GET    /issuer/:issuer_id/certificates/:id/edit(.:format) {:action=>"edit", :controller=>"certificates"}
     issuer_certificate GET    /issuer/:issuer_id/certificates/:id(.:format)      {:action=>"show", :controller=>"certificates"}
                        PUT    /issuer/:issuer_id/certificates/:id(.:format)      {:action=>"update", :controller=>"certificates"}
                        DELETE /issuer/:issuer_id/certificates/:id(.:format)      {:action=>"destroy", :controller=>"certificates"}
4

3 に答える 3

2

:issuer を参照するには、resource の代わりに resources (複数) を使用する必要があります。だからこれを試してください:

resources :issuers do
   resources :certificates
end

そしてissuers/2/certificates動作します。

于 2011-05-23T16:01:03.430 に答える
1

ルート.rbファイルで、発行者を単一のリソースとして定義しています

  resource :issuer do         # <-----  using resource instead of resources
    resources :certificates
  end 

単一のリソースでは、取得するルートで:idを一致させることができないため、この例では、

issuer/2/certificates

それはあなたに悲しみを与えている「2」です。それを取り除くか、routes.rbファイルで:issuerを標準(非特異)リソースとして定義する必要があります。

于 2011-11-25T20:44:45.023 に答える
0

PUTを定義していません/issuer/2/certificates。代わりに、 に対して定義してい/issuer/2/certificates/123ます。そのため、そのエラーが発生します。

を編集しようとしてcertificateいる場合は、正しいリンクを生成して を含めるようにしてくださいcertificate_id

于 2011-05-25T06:24:07.380 に答える