Bonjour,
Je vous explique mon problème, j’ai plusieurs type d’entreprise qui
pointe
vers des contacts, et un contacts une seul entreprise, voici les routes
:
map.namespace :address_book do |address_book|
address_book.root :controller => :address_book
address_book.resources :customers,
:has_many => [:contacts]
address_book.resources :providers,
:has_many => [:contacts]
address_book.resources :suppliers,
:has_many => [:contacts]
end
Jusqu’ici tous vas bien.
Je souhaitait ajouter une méthode destroys à mon contrôleur contacts et
lÃ
impossible de spécifier l’entreprise dont il dépent…
Il me fallait donc se type de route :
map.namespace :address_book do |address_book|
address_book.root :controller => :address_book
address_book.resources :customers,
:has_many => [:contacts => {:collection =>
{:destroys => :post}}]
address_book.resources :providers,
:has_many => [:contacts => {:collection =>
{:destroys => :post}}]
address_book.resources :suppliers,
:has_many => [:contacts => {:collection =>
{:destroys => :post}}]
end
pour pouvoir faire ce type de lien :
url_for({:controller => “contacts”, :action => :destroys, :provider_id
=>
@address_book_customer.id}) # =>
address_book/providers/1/contacts/destroys
url_for({:controller => “contacts”, :action => :destroys, :provider_id
=>
@address_book_provider.id}) # =>
address_book/customers/2/contacts/destroys
url_for({:controller => “contacts”, :action => :destroys, :provider_id
=>
@address_book_supplier.id}) # =>
address_book/suppliers/3/contacts/destroys
J’ai donc modifier le codes sources de rails (resources.rb) pour ce
faire.
Est ce une bonne idée ? Y a t il une meilleur solution ?