Ошибка «Нет совпадений маршрута» - с вложенным ресурсом - PullRequest
0 голосов
/ 23 мая 2011

В моем 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"}

Ответы [ 3 ]

2 голосов
/ 23 мая 2011

Вы должны использовать ресурсы (множественное число) вместо ресурса в отношении: эмитента.Поэтому, пожалуйста, попробуйте это:

resources :issuers do
   resources :certificates
end

и issuers/2/certificates будут работать.

1 голос
/ 26 ноября 2011

В вашем файле rout.rb вы определяете эмитента как отдельный ресурс

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

С единичными ресурсами, маршруты, которые вы получаете, не позволяют совпадать: id, поэтому в вашем примере,

issuer/2/certificates

это "2", которая приносит тебе горе. Вы должны либо избавиться от него, либо определить: isser в качестве стандартного (не единственного) ресурса в вашем файле rout.rb.

0 голосов
/ 25 мая 2011

Вы не определили PUT для /issuer/2/certificates.вместо этого он определен для /issuer/2/certificates/123.Вот почему вы получаете эту ошибку.

Если вы пытаетесь редактировать certificate, убедитесь, что вы сгенерировали правильную ссылку и включили certificate_id.

...