En plus d'utiliser l'assistant de routage, vous pouvez également créer des chemins et des URL à partir d'un tableau de paramètres. Considérez le routage suivant
ruby.rb
resources :magazines do
resources :ads
end
Il y a des ressources: des publicités (publicités) dans des ressources: des magazines. Si vous utilisez magazine_ad_path, au lieu de passer l'identifiant numériquement Vous pouvez respectivement transmettre des instances Magazine et Ad comme arguments. Vous pouvez maintenant affiner le chemin avec les informations d'instance pour @magazine et @ad respectivement.
<%= link_to 'Ad details', magazine_ad_path(@magazine, @ad) %>
Vous pouvez également utiliser url_for pour un ensemble de plusieurs objets. Même si vous passez plusieurs objets, le routage approprié est automatiquement déterminé.
<!--@avec magazine@passer l'annonce comme argument-->
<%= link_to 'Ad details', url_for([@magazine, @ad]) %>
Dans le cas ci-dessus, Rails reconnaît que @magazine est Magazine et @ad est Ad et appelle l'assistant magazine_ad_path en fonction de celui-ci. C'est incroyable que vous reconnaissiez cela vous-même. ..
De même, les helpers tels que link_to peuvent simplement passer un objet au lieu de l'appel complet url_for.
<%= link_to 'Ad details', [@magazine, @ad] %>
Si vous souhaitez créer un lien vers un seul magazine, écrivez:
<%= link_to 'Magazine details', @magazine %>
Pour toutes les autres actions, il suffit d'insérer le nom de l'action dans le premier élément du tableau.
<%= link_to 'Edit Ad', [:edit, @magazine, @ad] %>
Cela vous permet de traiter une instance du modèle comme une URL. C'est l'un des grands avantages d'adopter un style ingénieux.
C'est incroyable que Rails génère automatiquement un chemin en passant une instance au chemin.
Guide des rails de référence